ASP.NET MVC:在AuthorizeAttribute和Controller之间共享数据

时间:2013-09-11 08:46:52

标签: c# asp.net asp.net-mvc authentication

我正在使用AuthorizeAttribute来检查用户在我的控制器上执行操作的能力。我希望能够将某些用户会话添加到“黑名单”,以便AuthorizeAttribute将来拒绝他们的请求。除了使用数据库层之外,还有可能做到这一点吗?

1 个答案:

答案 0 :(得分:0)

您可以创建一个覆盖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();
}