gpt4 book ai didi

c# - 如何将 'pass parameter' 添加到自定义 AuthorizeAttribute

转载 作者:太空狗 更新时间:2023-10-29 17:35:01 26 4
gpt4 key购买 nike

我想保护 Controller 操作,以便只有具有“管理员”角色的用户才能进入。
我根本不使用角色/成员身份提供程序,一切都是自定义的。
到目前为止我做了这个:

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()

最佳答案

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);
}
}

关于c# - 如何将 'pass parameter' 添加到自定义 AuthorizeAttribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15042821/

26 4 0