Ich habe meinen eigenen Rollenanbieter implementiert, und ich verwende nicht den Standardanbieter. Es funktioniert bis zu dem Punkt, dass es sagen kann, wenn jemand eine Seite sehen kann oder sollte.
Kann es jedoch Folgendes tun:
Ich habe nicht herausgefunden, wie man das mit dem Autorize-Attribut macht, alles was ich habe ist:
%Vor%Grundsätzlich muss ich auf eine andere Seite umleiten, je nachdem, welcher Teil der Autorisierung fehlschlägt.
Ich habe nachgesehen, ob etwas in web.config ist, aber nichts Offensichtliches springt heraus.
VoodooChild
antwortete # 1.
Für # 2 -
Sie können prüfen, ob der Benutzer auf der Anmeldeseite angemeldet ist und eine andere Nachricht oder eine völlig andere Seite anzeigt (oder sogar eine andere Aktion ausführen).
Alternativ können Sie ein eigenes Berechtigungsattribut erstellen. Dies erfordert, dass Sie dieses Attribut überall anstelle des Standardwerts AuthorizeAttribute
dachte nur an eine andere Methode. Wenn eine Umleitung von einer anderen Seite zu login
page erfolgt, wird auch eine querystring ReturnUrl
übergeben. So können Sie auch überprüfen, ob es etwas enthält UND der Benutzer authentifiziert ist, ist der Benutzer wahrscheinlich nicht berechtigt, diese Seite anzuzeigen.
Wenn Sie FormsAuthentication verwenden, sollten Sie Ihre erste Frage beantworten: Ja Wenn der Benutzer nicht authentifiziert oder angemeldet ist, kann er auf die Anmeldeseite umgeleitet werden:
Stellen Sie sicher, dass Sie diese Datei in der web.config-Datei haben (nicht sicher, ob Sie etwas daneben brauchen, schauen Sie hinein.)
%Vor%Um Ihre zweite Frage zu beantworten: "Wenn ein Benutzer angemeldet ist, aber nicht die richtige Rolle hat, leiten Sie ihn auf eine andere Seite weiter"
Wie wir das gemacht haben, haben wir die System.Web.Security.Roles.GetRolesForUser(username);
-Methode verwendet, um die Rollen zu bekommen und basierend darauf haben wir den Benutzer nach der Anmeldung in die richtige Ansicht umgeleitet.
Hoffe, das hilft!
Tags und Links c# asp.net-mvc-2