MVC RoleProvider- und Autorize-Attribut

8

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:

  1. Wenn ein Benutzer nicht angemeldet ist, leiten Sie auf meine Anmeldeseite
  2. um
  3. Wenn ein Benutzer angemeldet ist, aber nicht die richtige Rolle hat, leiten Sie ihn auf eine andere Seite um

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.

    
AndrewC 12.01.2011, 00:39
quelle

2 Antworten

11

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

verwenden %Vor%

Aktualisierung:

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.

    
Omar 12.01.2011, 01:20
quelle
7

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!

    
VoodooChild 12.01.2011 01:04
quelle

Tags und Links