获取ASP.NET身份验证中已登录用户列表

14

我开始使用ASP.NET身份验证, 但我找不到获取当前已登录用户列表的方法。要获取所有用户,我可以使用以下代码:

new ApplicationDbContext().Users

ApplicationDbContext是随ASP.NET Web应用程序模板提供的,它扩展了IdentityDbContext

但是IdentityUser类似乎没有任何查询已登录状态的方法。

感谢任何提示。


3
如果目前在ASP.NET Identity中实现了这一点,我会印象深刻。 - Jonesopolis
你有没有考虑捕获用户登录时发生的事件?将该信息存储在数据库表或内存中。当用户退出时,从数据库或内存中删除该用户。 - mason
我不这么认为-“当前已登录”的概念非常应用程序特定,因此不太可能有适用于许多情况的实现。 - Alexei Levenkov
你说的是应用程序特定的意思是什么?另外,关于捕获登录事件。我可以做到,但是当用户自动注销时怎么办?我没有看到任何与登录或注销相关的事件。 - SoManyGoblins
1
你可以创建自定义的 IHttpModule 实现,在那里你可以订阅 PostAuthenticateRequestAuthenticateRequest 上下文事件,并在那里检查 context.Request.IsAuthenticated,这将是一个很好的起点。 - Andrew
1个回答

23

目前没有内置支持此功能的方法。一种简单的实现方式是为用户添加一个LastActivityDate字段,每当用户在您的网站上执行操作时更新该字段。然后,您可以对该字段进行查询,寻找最近30分钟以内活跃的用户,并进行显示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接