Asp.net mvc mvc.net自定义[授权]属性
我在我的项目中使用mvc4,使用SimpleMembership角色提供程序。我需要在我的项目中实现基于任务的访问。我的ActionResult([HttpPost])由创建、获取、更新和删除方法组成。我实现了自定义授权类,它是Asp.net mvc mvc.net自定义[授权]属性,asp.net-mvc,Asp.net Mvc,我在我的项目中使用mvc4,使用SimpleMembership角色提供程序。我需要在我的项目中实现基于任务的访问。我的ActionResult([HttpPost])由创建、获取、更新和删除方法组成。我实现了自定义授权类,它是 public class AuthorizeUserAttribute : AuthorizeAttribute { // Custom property public string AccessLevel { get; set; }
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(调用创建、更新、删除和查看方法)中实现了total view、create、update和delete功能
我的问题是,当我为Get方法指定[AuthorizeUser(AccessLevel=“Get”)]时,为Create方法指定[AuthorizeUser(AccessLevel=“Create”)],等等。。。。
控件进入ActionResult()后,它首先检查[AuthorizeUser(AccessLevel=“some access level”)],一旦授权,它就不会检查其他方法[AuthorizeUser]
在ActionResult()上尝试[AuthorizeUser]之后,我得出结论,只有对于每个页面请求,它才检查授权(而不是第二次),是否有任何方法可以在单个页面请求中多次调用[AuthorizeUser(AccessLevel=“some access level”)]
提前感谢…您是否只注释了控制器?是这个吗?你应该更清楚。授权pop来自每个请求。我不是在向控制器注释。我正在注释我的ActionResult()的每一种方法;