【发布时间】:2013-09-11 08:46:52
【问题描述】:
我正在使用 AuthorizeAttribute 来检查用户在我的控制器上执行操作的能力。我希望能够将某些用户会话添加到“黑名单”,以便 AuthorizeAttribute 将来拒绝他们的请求。除了使用数据库层之外,还有没有可能做到这一点?
【问题讨论】:
-
如果没有数据库,您如何提出这项工作?
标签: c# asp.net asp.net-mvc authentication
我正在使用 AuthorizeAttribute 来检查用户在我的控制器上执行操作的能力。我希望能够将某些用户会话添加到“黑名单”,以便 AuthorizeAttribute 将来拒绝他们的请求。除了使用数据库层之外,还有没有可能做到这一点?
【问题讨论】:
标签: c# asp.net asp.net-mvc authentication
您可以创建一个自定义的 blacklist 类来覆盖 AuthorizeCore:
public class BlackListAttribute : AuthorizeAttribute
{
public string BlackListedUsers { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (_blackListedUsers.Contains(user))
{
return false;
}
}
}
然后在你的控制器上:
[BlackList(BlackListedUsers="name, name2, name3")]
public ActionResult YourActionMethod()
{
return View();
}
【讨论】: