MVC custom roleprovider, wie man es mit HttpContext.Current.User.IsInRole ("myrole") verbindet

8

Ich habe eine MVC-App und habe dafür einen benutzerdefinierten Rollenanbieter erstellt:

%Vor%

Dies funktioniert sehr gut mit dem Beschränken des Zugriffs auf Controller und Aktionen mit:

%Vor%

über dem Controller oder der Aktion.

Ich möchte auch eingeschränkten Zugriff auf einige Dinge in der Ansicht, obwohl mit:

%Vor%

Diese Methode gehört nicht zu meinem Rollenanbieter, wird aber nicht überschrieben.

Weiß jemand, wie man es auch für diese Methode macht?

    
AnonyMouse 01.11.2011, 22:50
quelle

2 Antworten

11

Wenn Sie Ihren RoleProvider als Rollenanbieter für die Anwendung in web.config angeschlossen haben, sollte dies automatisch funktionieren. Das Framework erstellt zu Beginn der Anfrage ein RolePrincipal für einen authentifizierten Benutzer, der die Methode GetRolesForUser für Ihren Rollenanbieter aufruft und den Namen aus dem IIdentity als Benutzernamen übergibt.

Die Framework-Implementierung von RolePrincipal s IsInRole(string role) Methode ist in etwa so (ich habe Kommentare hinzugefügt)

%Vor%

Setzen Sie einen Haltepunkt innerhalb Ihrer RoleProvider GetRolesForUser -Methode, um sicherzustellen, dass er korrekt aufgerufen wird, und überprüfen Sie auch die IPrincipal ( HttpContext.Current.User ), um sicherzustellen, dass sie vom Typ RolePrincipal für einen authentifizierten Benutzer ist / p>     

Russ Cam 01.11.2011, 22:55
quelle
5

Tut mir leid, ich bin zu spät zur Party hier;

Zum Nutzen anderer Leute mit dem gleichen Problem - Russ Cams Antwort ist genau richtig, um die Antwort zu finden .

In meinem Fall hatte mein benutzerdefinierter roleManager nicht 'enabled="true" und cacheRolesInCookie="true". Dies schien zu verhindern, dass GetRolesForUser aufgerufen wurde.

Arbeitscode Für die Datei web.config:

%Vor%

Wirklich gutes Tutorial zu diesem Thema unter Ссылка

    
HockeyJ 26.06.2012 23:51
quelle

Tags und Links