我在asp.net mvc5 Web应用程序中定义了以下自定义授权属性: -
public class CheckUserPermissionsAttribute : AuthorizeAttribute
{
public string Model { get; set; }
public string Action { get; set; }
private bool _authorize;
StaffRepository staffrepo = new StaffRepository();
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
_authorize = base.AuthorizeCore(httpContext);
if (!_authorize)
{
return false;
}
int value = 0;
/code goes here
string ADusername = httpContext.User.Identity.Name.Substring(httpContext.User.Identity.Name.IndexOf("\\") + 1);
if (!staffrepo.hasPermission(ADusername, Model, value)) // implement this method based on your tables and logic
{
return false;
//base.HandleUnauthorizedRequest(filterContext);
}
return true;
// base.OnAuthorization(filterContext);
}
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
//code goes here
}
}
}
我将在Action方法调用之前定义此自定义授权属性,如下所示: -
[HttpGet]
[CheckUserPermissions(Action = "Approve", Model = "SalesRequests")]
public ActionResult ApprovalList()
{
所以这在我的应用程序中运行良好,所以我可以说要访问此操作方法,用户需要至少对客户模块的Edit权限等。 但现在一个新的要求是我们需要定义一个名为“Restricted Edit”的新权限级别,这意味着用户只能编辑自己的项目。所以目前我的自定义授权属性是通用的,不允许定义这样的检查 所以任何人都可以就可用的方法提出建议吗? 感谢