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 ?

Comment implémenter des fournisseurs d'adhésions et de rôles personnalisés dans ASP.NET MVC 2 ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-05 06:41:43899parcourir

How to Implement Custom Membership and Role Providers in ASP.NET MVC 2?

Implémentation d'un fournisseur d'adhésion personnalisé pour 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn