Maison >développement back-end >C++ >Comment implémenter des fournisseurs d'adhésions et de rôles personnalisés dans ASP.NET MVC 2 ?
Fournisseur d'adhésion personnalisé
Pour créer un fournisseur d'adhésion personnalisé, héritez de la classe abstraite MembershipProvider et remplacez la méthode ValidateUser pour vérifier les informations d'identification de l'utilisateur par rapport à votre source de données prévue. Prenons l'exemple suivant :
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); } }
Intégrez le fournisseur dans ASP.NET MVC 2 en ajoutant une référence et en le configurant dans web.config :
<membership defaultProvider="MyMembershipProvider"> <providers> <clear /> <add name="MyMembershipProvider" applicationName="MyApp" Description="My Membership Provider" passwordFormat="Clear" connectionStringName="MyMembershipConnection" type="MyApp.MyMembershipProvider" /> </providers> </membership>
Fournisseur de rôles personnalisé
Pour une autorisation basée sur les rôles, créez une classe qui hérite de la classe abstraite RoleProvider et remplace la Méthode GetRolesForUser.
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; }
Configurez le fournisseur de rôles dans 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>
Autorisation
Utilisez la méthode [Authorize(Roles= "xxx,yyy")] pour protéger les contrôleurs et les actions pour des rôles.
Attribut d'autorisation personnalisé (facultatif)
Pour rediriger les utilisateurs non autorisés vers une page Accès refusé, créez un attribut [MyAuthorization] personnalisé :
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)] public class MyAuthorizationAttribute : AuthorizeAttribute { // ... Implementation }
Utilisez l'attribut comme suit :
[MyAuthorization(Roles = "Portal Manager,Content Editor", ViewName = "AccessDenied")] public class DropboxController : Controller { ....... }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!