0

SimpleMembership ロール プロバイダーを使用して、プロジェクトで mvc4 を使用しています。プロジェクトにタスク ベースのアクセスを実装する必要があります。私の ActionResult([HttpPost]) は、Create、Get、Update、および Delete メソッドで構成されています。カスタム Authorize クラスを実装しました...

public class AuthorizeUserAttribute : AuthorizeAttribute
{

    // Custom property
    public string AccessLevel { get; set; }          
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var isAuthorized = base.AuthorizeCore(httpContext);


   if (!isAuthorized)
        {
            return false;
        }

        string privilegeLevels = string.Join("", objManager.GetPermissions()); // Call another method to get rights of the user from DB(view,delete,update,create)


        if (privilegeLevels.Contains(this.AccessLevel))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        //some code for redirect to request page and showing alert("you don't have permission to do this action") through Response.

    }
}

各 ActionResult で [AuthorizeUser(AccessLevel="Get or Delete or View or Create")] を使用できません。全体のビュー、作成、更新、および削除機能を 1 つの ActionResult (作成、更新、削除、およびビューのメソッドを呼び出す) に実装したためです。

私の問題は、Get メソッドに [AuthorizeUser(AccessLevel="Get")] を、Create メソッドに [AuthorizeUser(AccessLevel="Create")] などを与えるときです... コントロールが ActionResult() 内に入った後、それは最初に [AuthorizeUser(AccessLevel="some access level")] をチェックし、一度 Authorize すると、他のメソッド [AuthorizeUser] をチェックしていません。

ActionResult() で [AuthorizeUser] を試した後、[AuthorizeUser(AccessLevel="some access level")] を呼び出す方法はありますか? 1 つのページ要求で複数回。

前もって感謝します...

4

0 に答える 0