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 つのページ要求で複数回。
前もって感謝します...