我正在使用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 =“获取或删除或查看或创建”)]。 因为我在一个ActionResult(调用创建,更新,删除和查看方法)中实现了全视图,创建,更新和删除功能。
我的问题是当我为Get方法[AuthorizeUser(AccessLevel =“Create”)]提供[AuthorizeUser(AccessLevel =“Create”)]时,创建方法等等...... 在控制进入ActionResult()之后,它首先检查[AuthorizeUser(AccessLevel =“some access level”)],一旦它是Authorize,它就不会检查其他方法[AuthorizeUser]。
在ActionResult()上尝试[AuthorizeUser]之后,我得出的结论是,只有每个页面请求都要检查授权(不是为了时间),有没有办法调用[AuthorizeUser(AccessLevel =“某个访问级别) “)]在单页请求中不止一次。
提前致谢...