[c#] Wie kann ich eine nicht autorisierte Seite bereitstellen, wenn sich ein Benutzer nicht in den Autorisierten Rollen befindet?


Answers

Sie können dies auf zwei Arten tun:

  1. Geben Sie den Fehler das HandleError-Attribut an und geben Sie eine Ansicht an, die angezeigt werden soll:

    [HandleError (ExceptionType = typeof (UnAuthorizedException), Ansicht = "UnauthorizedError")]

Sie können mehrere verschiedene ExceptionTypes und Views angeben

  1. Erstellen Sie einen benutzerdefinierten ActionFilter, überprüfen Sie dort nach Anmeldeinformationen und leiten Sie an einen Controller um, wenn der Benutzer nicht autorisiert ist .: http://web.archive.org/web/20090322055514/http://msdn.microsoft.com/en-us/library/dd381609.aspx
Question

Ich verwende das Authorize Attribut wie folgt:

[Authorize (Roles="Admin, User")]
Public ActionResult Index(int id)
{
    // blah
}

Wenn ein Benutzer nicht in den angegebenen Rollen ist, erhalte ich eine Fehlerseite (Ressource nicht gefunden). Also habe ich auch das HandleError Attribut HandleError .

[Authorize (Roles="Admin, User"), HandleError]
Public ActionResult Index(int id)
{
    // blah
}

Jetzt geht es zur Anmeldeseite , wenn der Benutzer nicht in den angegebenen Rollen ist.

Wie kann ich erreichen, dass die Seite " Nicht autorisiert " anstelle der Anmeldeseite angezeigt wird, wenn ein Benutzer eine der erforderlichen Rollen nicht erfüllt? Und wenn ein anderer Fehler auftritt, wie kann ich diesen Fehler von einem nicht autorisierten Fehler unterscheiden und anders behandeln?




Und HttpUnauthorizedResult (dies kommt als Folge der AuthorizeAtrribute ) setzt nur StatusCode auf 401. So können Sie wahrscheinlich 401 Seite in IIS oder benutzerdefinierte Fehlerseiten in web.config einrichten. Natürlich müssen Sie auch sicherstellen, dass der Zugriff auf Ihre benutzerdefinierte Fehlerseite keine Autorisierung erfordert.




Related