我如何访问当前的Model对象&我的自定义Authorize属性中的ID

时间:2015-01-29 14:49:56

标签: asp.net .net asp.net-mvc asp.net-mvc-5 authorize-attribute

我在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”的新权限级别,这意味着用户只能编辑自己的项目。所以目前我的自定义授权属性是通用的,不允许定义这样的检查 所以任何人都可以就可用的方法提出建议吗? 感谢

0 个答案:

没有答案