2

ASP.NETMVCアプリケーションにカスタムRoleProviderを実装しようとしています。

カスタムMembershipProviderを作成しましたが、ユーザーを正常に検証できるという点で機能します。次のステップは、RoleProviderを実装して、certianコントローラーへのアクセスを管理者ユーザーのみに制限することです。

誰かが私が取る必要があるステップの簡単な概要を私に提供できますか?

私が今いるポイントは、次のように、承認フィルターを備えたコントローラーを持っていることです。

[Authorize(Roles="Admin")]
public class AdminOnlyController : Controller
{ 
    // stuff 
}

CustomRoleProviderクラスがあり、次のメソッドと実装されていないメソッドがたくさんあります。

public override string[] GetRolesForUser(string username)
{
    if (username == "dave")
    {
        return new string[] { "Admin" };
    }
}

どういうわけかユーザーをロールに追加する必要があると思いますが、その方法がわかりません。理想的には、最終結果は、許可されていないユーザーが特定のコントローラーにアクセスできないシナリオになります。ビューで、次のようなリンクを表示するかどうかを決定できます。

if (User.IsInRole("Admin"))
{
    // show links to Admin Controllers
}

誰かが私を正しい方向に向けることができますか?

4

2 に答える 2

3

これをカスタム ロール マネージャーのベースラインとして使用しました。http://davidhayden.com/blog/dave/archive/2007/10/17/CreateCustomRoleProviderASPNETRolePermissionsSecurity.aspx

MVC または Web フォームで動作する必要があります。

更新: その Web ページはもう存在しないため、代わりにこのページを試すことができます。基本的な要件は、RoleProvider インターフェイスを実装する必要があることです。つまり、次のとおりです。

void AddUsersToRoles(string[] usernames, string[] roleNames)
string[] GetRolesForUser(string id)
bool RoleExists(string roleName)
于 2009-12-07T14:23:12.410 に答える
2

実装されていないメソッドについては、必ずNotImplementedExceptionをスローしてください。これは、ジョブを完了するためにカスタム プロバイダーで必要なメソッドを把握するのに役立ちます。

IsUserInRoleを実装する必要があると思います。

于 2009-09-30T22:37:50.650 に答える