我正在开发一个新的Asp.net MVC应用程序,对于我来说看到登录用户以及他们的注销时间是非常重要的,如果用户单击注销按钮,对我来说就没有问题。但大部分时间用户通过浏览器浏览浏览器或关闭浏览器。现在有办法。我有一个想法,每两分钟运行一次操作来检查用户是否在那里。但这是一个好主意,风险是什么。如果是这样,任何人都有一个例子可以实现!用户登录时间
用户登录时间
回答
您可以使用JavaScript功能onbeforeunload
事件。 当用户离开页面时,此函数被调用。
该函数将您的ajax请求放到服务器上,此时用户卸载页面并创建您的逻辑。
对于多个选项卡或多个设备,解决方案很简单。每个多个选项卡都将具有相同的会话,但即使用户相同,每个新设备也会有一个新会话。 可以做些什么来保存每个会话的最新请求,而不考虑设备。即使用户有多个设备,您的日志也会包含用户每台设备上每个会话的登录时间。
希望这有助于
我在2天前寻找同样的事情。我的做法是现在如下:
在
- 我像会话密钥和用户ID,以确定他的数据库保存一些数据用户登录。我也保存登录时间和更新日期时间。
- 我只保存这个,如果用户已经通过身份验证。
用户呼叫行动
- 我在数据库中的每个用户执行动作更新日期时间。
用户使用注销按钮
- 我谨从表“会话”数据库中的条目“sessionHistory”和更新日期时间到退出时间。
用户关闭浏览器(这是它得到棘手)
我建了一个很小的一段代码使用jQuery。我调用$ .get,并在MVC中每隔30秒戳一次“UpdatePing”动作。
“UpdatePing”操作将更新数据库中的会话条目。现在我可以看到他的浏览器是否仍然打开。
警告:您不会确切地知道用户何时关闭标签页/浏览器。你可以尝试使用“beforeunload”事件,但我不会依赖它(浏览器崩溃等)。
删除过期会话
- 我不完全删除会话数据。我将会话数据复制到“sessionHistory”表中。
我刚刚在另一个问题中看到了你的评论(关于多个标签)。 你可以尝试基于ping来计算它。 – KampfFussel
在每个会话中ping都会在竞争环境中产生大量开销,尤其是当您可以使用JavaScript onbeforeunload中的一个内置功能时。或者甚至是Ajax控制工具包来在用户关闭该窗口时只ping一次服务器,并保存用户的最新请求以估计用户离开你的应用的精确时间。 – Waqar
这是真的,如果浏览器没有正确关闭,alluninforeunload不会触发。如果这不重要,请跳过ping和会话更新,并使用onbeforeunload事件重定向到注销页面。 – KampfFussel
感谢所有的答案,但答案都可能得在复杂项目时会较大的方式。例如,我将用移动应用程序支持该应用程序。 我发现最好的解决方案是使用SignalR从客户端发送单个到服务器,当这些单一停止一段时间后,我将自动注销用户。
SignalR每隔一段时间后对每个用户都会产生很大的开销。从这一点来看,这将是一个巨大的资源使用情况。 – Waqar
- 1. 用户登录时的计数时间
- 2. 更新用户登录时间
- 3. Drupal 6增加用户登录时间
- 4. 用户登录时间限制
- 5. 保存用户登录的时间
- 6. CodeIgniter + Tank Auth。如何登录用户时间,登录等
- 7. 如何检查当前登录的用户和登录时间
- 8. 用户必须以输入的时间间隔登录
- 9. 使用正确的登录用户数据时,Ajax登录不会登录
- 10. 使用Spring Security登录登录时的用户代理信息
- 11. 我可以在使用openID时登录用户登录
- 12. Android Facebook SDK 4.0登录:用户登录Facebook应用时出错
- 13. 用curl登录dropbox(用户登录)
- 14. 当用户通过Facebook登录时发布在用户时间线上
- 15. 根据用户使用httpcontext登录的时间获取asp.net mvc
- 16. 让用户长时间登录应用程序
- 17. ASP.NET会员登录用户登录时将登录重定向为未授权
- 18. 登录Azure门户时启用双因子登录
- 19. 当用户登录时Flash的登录屏幕在Meteorjs
- 20. 允许在登录时仅登录一个用户
- 21. 用户登录时隐藏注册和登录按钮?
- 22. 如何隐藏用户在web2py中登录时的登录?
- 23. 如何登录wordpress时登录laravel中的相同用户?
- 24. 当用户登录时隐藏注册和登录表单ASP.NET
- 25. 如何在用户登录时删除登录对话框?
- 26. 如何在用户未登录时将用户重定向到登录页面
- 27. 用户登录Sqlite?
- 28. SignalR用户登录
- 29. Android用户登录
- 30. Symfony登录用户
我曾想过这个解决方案,但这里有一个例子,如果用户打开多个选项卡。我们如何去决定。 –
多个选项卡,保存用户收到的当前会话的最新请求。 – Waqar
是的,我想到了这个解决方案,但是如果用户打开多浏览器或在多设备中打开它会怎么样。随着项目变大,我认为这个解决方案会变得复杂。任何方式非常感谢你的答案。如果你能看到我的评论以下看看这是不是一个好主意。 –