Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melaksanakan Keahlian Tersuai dan Pembekal Peranan dalam ASP.NET MVC 2?

Bagaimana untuk Melaksanakan Keahlian Tersuai dan Pembekal Peranan dalam ASP.NET MVC 2?

Susan Sarandon
Susan Sarandonasal
2025-01-05 06:41:43904semak imbas

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

Melaksanakan Penyedia Keahlian Tersuai untuk ASP.NET MVC 2

Penyedia Keahlian Tersuai

Untuk mencipta penyedia keahlian tersuai, mewarisi kelas abstrak MembershipProvider dan mengatasi kaedah ValidateUser untuk mengesahkan kelayakan pengguna berbanding yang anda inginkan sumber data. Pertimbangkan contoh berikut:

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);
    }
}

Sepadukan penyedia ke dalam ASP.NET MVC 2 dengan menambah rujukan dan mengkonfigurasinya dalam 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>

Penyedia Peranan Tersuai

Untuk kebenaran berasaskan peranan, buat kelas yang mewarisi Kelas abstrak RoleProvider dan mengatasi kaedah 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;
}

Konfigurasikan pembekal peranan dalam 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>

Keizinan

Gunakan atribut [Authorize(Role="xxx,yyy")] untuk melindungi pengawal dan tindakan khusus peranan.

Atribut Keizinan Tersuai (Pilihan)

Untuk mengubah hala pengguna yang tidak dibenarkan ke halaman AccessDenied, buat atribut [MyAuthorization] tersuai:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class MyAuthorizationAttribute : AuthorizeAttribute
{
    // ... Implementation
}

Gunakan atribut seperti berikut:

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

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Keahlian Tersuai dan Pembekal Peranan dalam ASP.NET MVC 2?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn