如何添加';pass参数';以自定义AuthorizeAttribute

本文关键字:参数 自定义 AuthorizeAttribute pass 何添加 添加 | 更新日期: 2023-09-27 18:00:59

我想确保控制器操作的安全,这样只有角色为"管理员"的用户才能进入。
我根本不使用角色/会员资格提供程序,一切都是自定义的
到目前为止,我做到了:

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var isAuthorized = base.AuthorizeCore(httpContext);            
        if (!isAuthorized)
            return false;
        string username = httpContext.User.Identity.Name;
        UserRepository repo = new UserRepository();
        return repo.IsUserInRole(username, "Admin");
    }
}

注意,我在这里硬编码了"Admin">
我希望这是动态的
这项工作现在:

[CustomAuthorize]
        public ActionResult RestrictedArea()...

但我想要这样的东西:

[CustomAuthorize(Roles = "Admin")]
        public ActionResult RestrictedArea()

如何添加';pass参数';以自定义AuthorizeAttribute

AuthorizeAttribute已经具有可用于此目的的Roles属性:

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        var isAuthorized = base.AuthorizeCore(httpContext);            
        if (!isAuthorized)
        {
            return false;
        }
        string username = httpContext.User.Identity.Name;
        UserRepository repo = new UserRepository();
        return repo.IsUserInRole(username, this.Roles);
    }
}