【发布时间】:2017-04-18 16:02:06
【问题描述】:
你能告诉我如何杀死某人的会话并让他们从我的 MVC 应用程序中注销吗? 我目前的计划是:
- 在应用启动时加载 SessionsCache
- 当用户登录时 - 将他的会话保存在 tblSessions 中并部分重新加载缓存(在其中添加会话而不使其调用数据库)
- 每隔 30 秒,ajax 会验证我是否有会话
- 管理员将拥有一个界面工具,其中包含缓存中的所有活动会话,当他终止会话时,他会将其从缓存和 DB 中删除
- 在下一次 ajax 调用中,用户将无法进行会话并且会被注销
- 如果用户正常注销,缓存和数据库中的会话将被删除
- 每 30 分钟对缓存进行一次完全重新加载
请考虑我的应用程序具有 OnActionExecuting() 覆盖函数,该函数检查用户是否有会话,如果没有则注销他。 但是这只发生在动作执行时,如果用户没有点击任何地方(afk),他就不会被重定向到主页。 (考虑到检查会话的 ajax 调用可能是多余的?)
我还想在他关闭浏览器/选项卡而不使用 LogOut 按钮时清除用户会话,但我不确定这怎么会发生
【问题讨论】:
-
为了让客户端知道会话是否已过期,必须进行 ajax 调用以检查活动会话。
-
同样要在用户关闭浏览器时清除会话,这也必须涉及轮询。
-
@RyanSearle 你能解释一下什么是投票,或者至少给我一些链接到它的解释吗?谢谢
标签: c# asp.net-mvc session