0

ASP.net MVC 4 アプリケーションを構築しています。

過去に、[Authorize] 属性を使用して、役割に従ってユーザーを承認しました。

ただし、ソース コードを変更するのではなく、データベースを変更することでロールの承認を変更できる、より柔軟なソリューションが必要になりました。

誰でもこれを行う適切な方法を推奨できますか?

OnAuthorize メソッドのオーバーライドを検討しましたが、出力キャッシュの問題により、これはお勧めできません。

4

2 に答える 2

0

あなたはこのようなことをすることができます、私たちは私たちのアプリケーションでこれを使用しています

[AttributeUsageAttribute
        (AttributeTargets.Class | AttributeTargets.Struct |
        AttributeTargets.Constructor | AttributeTargets.Method, Inherited = false)]
    public class RequirePermissionsAttribute : ActionFilterAttribute, IAuthorizationFilter
    {
// Use inbuilt methods

//OnAuthorization //HandleUnauthorizedRequest //OnCacheAuthorization }

        [RequirePermissions(PermissionItems.ViewThisPage)]
        public ActionResult Index()
        {
}
于 2013-06-11T11:14:01.027 に答える
0

あなたの要件を正しく理解できたかどうかはわかりませんが、次のようなデータ モデルを使用して、2 つのレベルの役割を持つことができます。

User -in-> Role -has-> Permission

ユーザーとロールの間、およびロールとパーミッションの間に mn の関係があります。

これを行うと、パーミッションは非常にきめ細かく安定したものになり、ロールは粗く、パーミッションのセットに柔軟にマッピングできます。

これを実装する 1 つの方法は、Users-Roles-Permissions を結合して権限をアプリケーション ロールとして返すカスタムRoleProviderを単純に記述することです。

これを行う場合、標準Authorize属性を使用して、大まかなロール名ではなく、きめの細かいパーミッション名の 1 つを指定できます。たとえば、次のようになります。

[Authorize(Permissions.ViewCustomers)]
于 2013-06-11T11:23:57.570 に答える