如何在 mvc 5 中知道 OWIN cookie/用户会话即将到期

Posted

技术标签:

【中文标题】如何在 mvc 5 中知道 OWIN cookie/用户会话即将到期【英文标题】:How to know an OWIN cookie/User Session is about to expire in mvc 5 【发布时间】:2018-05-03 16:09:16 【问题描述】:

我是我的 MVC 5 应用程序,如果用户已经在另一个系统上登录,我需要阻止他们登录。为此,我在数据库中有一个标志列,并在用户登录时将其值设置为 true,在用户注销时将其值设置为 false。但是当用户在一段时间内处于非活动状态或关闭浏览器时会出现问题,这会使身份验证cookie无效但不会更新数据库中的标志,从而使用户保持登录在数据库中,因此用户将永远无法再次登录。 我想知道身份框架是否提供了任何功能,我可以在其中检查身份验证 cookie 是否即将到期时,我可以将数据库中的标志设置为 false。

【问题讨论】:

【参考方案1】:

由于我在这里没有得到任何答案,因此我找到了解决此问题的方法,并希望这对其他人也有帮助。我现在正在做的是将当前用户的SessionId 存储在数据库中,并在用户登录时将其isLoggedIn 标志设置为true。当用户注销时,我将isLoggedIn 标志设置为false 和还要从数据库中删除SessionId。 Global.asax 中的Session_End() 事件中也存在注销功能的相同功能,该事件处理不活动问题。目前这对我来说很好,但如果有人有不同的更好的方法,我愿意接受其他想法。

【讨论】:

以上是关于如何在 mvc 5 中知道 OWIN cookie/用户会话即将到期的主要内容,如果未能解决你的问题,请参考以下文章

身份验证/授权 MVC 5 和 Web API - Katana/Owin

带有 Owin JWT 身份的 MVC

从 OWIN Cookie 获取不记名令牌并将其放在 API 请求中

Cookie 持久性在 OWIN 身份验证中不起作用

如何在 OWIN ASP.NET MVC5 中注销用户

OWIN - Authentication.SignOut() 似乎没有删除 cookie