Ich weiß in MVC an der Spitze eines Controllers können Sie das [Authorize()]
Attribut verwenden, um den Zugriff auf den gesamten Controller auf bestimmte authentifizierte Benutzer und/oder Rollen zu beschränken, aber nicht durch IP, aber dies muss auf einer pro Controller-Instanz erfolgen. Gibt es eine Möglichkeit, den Zugriff auf einen gesamten MVC-Bereich auf einen authentifizierten Benutzer/eine authentifizierte Rolle oder auf die Anfrage Source IP zu beschränken?Wie schützt man einen gesamten MVC-Bereich nach IP/Rolle/Benutzer?
8
A
Antwort
15
Erstellen Sie eine Basisstation in Ihrer Nähe:
[AuthorizeArea(AllowIpAddresses = new [] {"1.1.1.1", "1.2.3.4"})]
public class CustomAreaBaseController : Controller
{
public CustomAreaBaseController()
{
// possibly any other common code that you want to run for all controllers in this area
}
}
Haben alle Controller in Ihrer Umgebung von Basis-Controller ableiten:
public class HomeController : CustomAreaBaseController
{
// actions for this controller
}
benutzerdefinierte Attribut erstellen autorisieren:
public class AuthorizeArea : AuthorizeAttribute
{
public string[] AllowIpAddresses { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
bool isValid = false;
if (httpContext == null)
throw new ArgumentNullException("httpContext");
// get current ip address
var ipAddress = httpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(ipAddress))
ipAddress = httpContext.Request.ServerVariables["remote_host"];
if (AllowIpAddresses.Contains(ipAddress)) isValid = true;
return base.AuthorizeCore(httpContext) && isValid;
}
}
Verwandte Themen
- 1. Wie schützt man einen Online-Richter vor bösartigem Code?
- 2. Spray Sicherheit: Wie man Routen schützt?
- 3. Wie schützt man eine Geschwindigkeitsvorlage vor Manipulationen?
- 4. Wie schützt man Objektfelder in Rebol?
- 5. Wie schützt man vor Manipulation der Abfragezeichenfolge?
- 6. Wie schützt man PHPSESSID in PHP?
- 7. Wie schützt man das Passwort in Python?
- 8. Wie schützt man Spammer vor Apache?
- 9. Wie schützt man ein Rails-Modellattribut?
- 10. DbUnit, wie man sich gegen mehrere gleichzeitig laufende Tests schützt?
- 11. Wie schützt IIFE Namespacing?
- 12. Java's protected schützt nicht
- 13. Wie schützt man ein System von innen (wie im Job)?
- 14. Wie schützt man USB-Ports im Active Directory mit Passwort?
- 15. Wie schützt man SWF-Dateien davor, angezeigt zu werden?
- 16. Wie schützt jQuery überschreiben jQuery und $
- 17. Wie schützt man die Anfrage-URL davor, in NodeJS nach oben zu gehen?
- 18. Wie schützt man eine Datei im Git-Repository vor Commits nach dem ersten Commit?
- 19. Wie schützt man diesen Code vor SQL-Injektion?
- 20. Wie schützt man Xml-Dateien in der App?
- 21. Wie schützt man die Dateinamenerweiterung in inc-Datei?
- 22. Wie schützt man Mac OS X-Software vor Rissen?
- 23. Wie schützt man mehrere Deklarationen in der x86-Assembly?
- 24. Wie schützt man ein Kontrollkästchen mit einem Passwort?
- 25. Wie schützt man ein Servlet vor externen Benutzern?
- 26. Wie schützt man eine gemeinsame Ressource mit Mutexen?
- 27. Wie schützt man Passwort und Benutzername in Sqoop?
- 28. Wie man die gesamten Daten zählt?
- 29. Wie man einen randomforest Klassifikator auf den gesamten Datensatz anwenden, einen kleinen Abschnitt nach dem anderen in Python
- 30. Wie schützt man einen API-Schlüssel bei der Verwendung von JavaScript?
Suche nach ** Benutzerautorisierungsattribut ** – Dmitry
Ich möchte meine eigenen Attribute nicht erstellen. Ich möchte nur die eingebauten Rollen/Benutzer Autorisierungskontrollen nehmen und sie auf einer Gebietsebene anwenden. Es wäre auch schön, wenn ich eine Code-Prüfung für IPs auf der Gebietsebene anwenden könnte, ich weiß, dass ich eine .cs-Datei machen und sie von jeder Controller-Aktion aufrufen könnte, aber das ist ein bisschen mühsam. –
Welche "eingebauten Rollen/Benutzer Autorisierungskontrollen" haben Sie im Sinn? Ich kann mir nichts anderes vorstellen als das Attribut "[Autorisieren]". Sie könnten einen Basiscontroller für Ihren Bereich haben, alle Controller in diesem Bereich von diesem Basiscontroller ableiten und dieses benutzerdefinierte Autorisierungsattribut auf den Basiscontroller schlagen. Das würde sich um die gesamte Bereichsautorisierung kümmern und Sie könnten es anpassen, um durch IP – Dmitry