Heim > Backend-Entwicklung > C++ > Wie implementiert man benutzerdefinierte Mitgliedschafts- und Rollenanbieter in ASP.NET MVC 2?

Wie implementiert man benutzerdefinierte Mitgliedschafts- und Rollenanbieter in ASP.NET MVC 2?

Susan Sarandon
Freigeben: 2025-01-05 06:41:43
Original
912 Leute haben es durchsucht

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

Implementieren eines benutzerdefinierten Mitgliedschaftsanbieters für ASP.NET MVC 2

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);
    }
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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>
Nach dem Login kopieren

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
}
Nach dem Login kopieren

Verwenden Sie das Attribut wie folgt:

[MyAuthorization(Roles = "Portal Manager,Content Editor", ViewName = "AccessDenied")]
public class DropboxController : Controller
{ 
    .......
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage