出现了这样的问题,我需要阻止用户。 我找到了函数:" SetLockoutEndDate"和#34; SetLockoutEnabled"。但不是其中之一,我无法帮助。第一个函数运行良好,它会阻塞,但只有当用户注销并停止时。我需要在消息出现后锁定用户。我们怎样才能在asp.net identity 2中实现锁定成员?
答案 0 :(得分:0)
您最好实施自己的逻辑以防止用户登录。您可以实施"锁定"或"已禁用" ApplicationUser
实体中的属性。这将使您更好地控制逻辑。
至于如何阻止用户在他被阻止后立即继续使用该应用程序,您可以使用AuthenticationManager
类对其进行签名,如下所示:< / p>
var autheticationManager = HttpContext.GetOwinContext().Authentication;
autheticationManager.SignOut();
当用户再次尝试登录时,您的逻辑应该阻止它。
或者,您可以使用您提到的SetLockoutEndDate
方法,但这只会锁定用户,直到指定的&#34;日期时间偏移&#34;到达了。 SetLockoutEnabled
不会锁定用户,但会启用锁定功能。如果您选择使用内置锁定,您仍然可以像我提到的那样退出用户,这将阻止他/她登录。
修改强>
正如您在评论中提到的,您在实施全局过滤器时遇到问题,这些过滤器会阻止未经授权的用户访问您的应用程序。
您需要做的第一件事是实现IAuthorizationFilter
或简单地创建一个派生自AuthorizeAttribute
的类。使用后者的优点是您仍然可以将其用作属性。
有关详细信息,请参阅:how to create custom authorize filter in asp.net mvc3
之后,您需要全局注册过滤器,这样您就不必在每个操作中手动实施过滤器。为此,请在global.asax
文件中将其添加到Application_Start
:
protected void Application_Start()
{
...
GlobalFilters.Filters.Add(new YourFilter());
...
}