>백엔드 개발 >C++ >ASP.NET MVC 2에서 사용자 지정 멤버십 및 역할 공급자를 구현하는 방법은 무엇입니까?

ASP.NET MVC 2에서 사용자 지정 멤버십 및 역할 공급자를 구현하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-05 06:41:43940검색

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

ASP.NET MVC 2용 사용자 지정 멤버십 공급자 구현

사용자 지정 멤버십 공급자

사용자 지정 멤버십 공급자를 만들려면, MembershipProvider 추상 클래스를 상속하고 ValidateUser 메서드를 재정의하여 의도한 데이터 소스에 대해 사용자 자격 증명을 확인합니다. 다음 예를 고려하십시오.

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

참조를 추가하고 web.config에서 구성하여 공급자를 ASP.NET MVC 2에 통합합니다.

<membership defaultProvider="MyMembershipProvider">
    <providers>
        <clear />
        <add name="MyMembershipProvider"
            applicationName="MyApp"
            Description="My Membership Provider"
            passwordFormat="Clear"
            connectionStringName="MyMembershipConnection"
            type="MyApp.MyMembershipProvider" />
    </providers>
</membership>

사용자 지정 역할 공급자

역할 기반 인증의 경우 RoleProvider 추상 클래스를 상속하고 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;
}

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>

권한 부여

[Authorize(Roles= "xxx,yyy")] 속성을 사용하여 특정 컨트롤러 및 작업을 보호합니다. 역할.

사용자 정의 인증 속성(선택 사항)

승인되지 않은 사용자를 AccessDenied 페이지로 리디렉션하려면 사용자 정의 [MyAuthorization] 속성을 생성하십시오.

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

다음과 같이 속성을 사용하세요.

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

위 내용은 ASP.NET MVC 2에서 사용자 지정 멤버십 및 역할 공급자를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.