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
Libérer: 2025-01-05 06:41:43
original
940 Les gens l'ont consulté

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);
    }
}
Copier après la connexion

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>
Copier après la connexion

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;
}
Copier après la connexion

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>
Copier après la connexion

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
}
Copier après la connexion

Utilisez l'attribut comme suit :

[MyAuthorization(Roles = "Portal Manager,Content Editor", ViewName = "AccessDenied")]
public class DropboxController : Controller
{ 
    .......
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal