Benutzerdefinierter Mitgliedschaftsanbieter
Um einen benutzerdefinierten Mitgliedschaftsanbieter zu erstellen, Erben Sie die abstrakte Klasse MembershipProvider und überschreiben Sie die ValidateUser-Methode, um Benutzeranmeldeinformationen anhand Ihrer beabsichtigten Datenquelle zu überprüfen. Betrachten Sie das folgende Beispiel:
public class MyMembershipProvider : MembershipProvider { public override bool ValidateUser(string username, string password) { // Validate user credentials against your database here. var oUserProvider = new MyUserProvider(); return oUserProvider.ValidateUser(username,password,CurrentTerritoryID); } }
Integrieren Sie den Anbieter in ASP.NET MVC 2, indem Sie einen Verweis hinzufügen und ihn in web.config konfigurieren:
<membership defaultProvider="MyMembershipProvider"> <providers> <clear /> <add name="MyMembershipProvider" applicationName="MyApp" Description="My Membership Provider" passwordFormat="Clear" connectionStringName="MyMembershipConnection" type="MyApp.MyMembershipProvider" /> </providers> </membership>
Benutzerdefinierter Rollenanbieter
Für die rollenbasierte Autorisierung erstellen Sie eine Klasse, die die abstrakte Klasse RoleProvider erbt und diese überschreibt GetRolesForUser-Methode.
public override string[] GetRolesForUser(string username) { // Fetch user roles from the database here. SpHelper db = new SpHelper(); DataTable roleNames = null; try { roleNames = db.ExecuteDataset(ConnectionManager.ConStr, "sp_GetUserRoles", new MySqlParameter("_userName", username)).Tables[0]; } catch (Exception ex) { throw ex; } string[] roles = new string[roleNames.Rows.Count]; int counter = 0; foreach (DataRow row in roleNames.Rows) { roles[counter] = row["Role_Name"].ToString(); counter++; } return roles; }
Konfigurieren Sie den Rollenanbieter in web.config:
<system.web> ... <roleManager enabled="true" defaultProvider="MyRoleProvider"> <providers> <clear /> <add name="MyRoleProvider" applicationName="MyApp" type="MyApp.MyRoleProvider" connectionStringName="MyMembershipConnection" /> </providers> </roleManager> ... </system.web>
Autorisierung
Verwenden Sie die [Authorize(Roles= „xxx,yyy“)]-Attribut, um Controller und Aktionen für bestimmte Zwecke zu schützen Rollen.
Benutzerdefiniertes Autorisierungsattribut (optional)
Um nicht autorisierte Benutzer auf eine AccessDenied-Seite umzuleiten, erstellen Sie ein benutzerdefiniertes [MyAuthorization]-Attribut:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)] public class MyAuthorizationAttribute : AuthorizeAttribute { // ... Implementation }
Verwenden Sie das Attribut wie folgt:
[MyAuthorization(Roles = "Portal Manager,Content Editor", ViewName = "AccessDenied")] public class DropboxController : Controller { ....... }
Das obige ist der detaillierte Inhalt vonWie implementiert man benutzerdefinierte Mitgliedschafts- und Rollenanbieter in ASP.NET MVC 2?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!