检查用户是否使用ASP进行身份验证.NET标识2



我使用的是ASP。. NET Identity 2来管理用户,并且想知道是否有一个功能可以通过UserManager来检查一个特定的用户当前是否经过身份验证或登录。我的意思是,网站管理员可以检查给定用户是否登录。我知道,有User.Identity.IsAuthenticated仅用于当前HTTP请求。我该如何实现它呢?

不,基本Identity 2.0中没有跟踪当前登录用户的功能,您必须自己添加这个功能。由于MVC的工作方式(实际上是因为HTTP的无状态),服务器永远无法确定客户端是否已登录。

在最基本的级别上,"登录"可以定义为从以下时间开始:

  • 用户身份验证,身份验证票据作为cookie写入浏览器

,直到下列任一情况发生:

  • 用户点击Logout链接

  • 认证票据cookie过期或被删除

由于票据存在于客户端,因此在第一种情况下,服务器只确切地知道用户何时注销。在第二种情况下,它只知道何时发出来自该客户端的下一个HTTP请求。除非您使用一些后台AJAX轮询或其他客户端服务器通信(如SignalR),否则服务器不会知道客户端是否只是闲置,或者他们已经关闭浏览器或转移到另一个页面。

如果你想自己跟踪这个,你必须扩展IdentityUser类来添加用户最后一次登录或活动的时间戳(并在用户每次发出请求时更新此信息),然后将其与当前时间进行比较,然后决定在特定时间范围内没有活动的用户将被视为注销。例如,您可以确定在过去30分钟内没有联系服务器的用户已经"注销",但除非他们实际通过AccountLogout控制器方法,否则您永远无法确定。

相关内容

  • 没有找到相关文章

最新更新