我想在 ASP.NET MVC 中允许新的登录通过同一帐户“踢”先前的登录会话。
似乎很清楚,我将为每个浏览器提供一个代表会话 ID 的烹饪。我将在服务器端缓存中跟踪当前活动的会话 ID。如果一个已经处于活动状态的用户尝试登录,我将验证业务逻辑(用户名、密码、自上次活动以来至少 15 分钟),然后更新缓存在服务器上的活动会话 ID。
现在我的问题是,浏览器持有无效的会话 ID。对于这种情况,我注入拒绝或重定向到登录的最佳点是什么?
我可以修改 AuthorizeAttribute,但似乎应该有一个更干净的地方来执行此操作,不需要我搜索和替换我的所有 Authorize 属性,例如通过 Global.asax 事件或控制器事件(I'我已经在我的项目中扩展了控制器)。
例如,如果 PreAuthorize 存在,我会在那里编写一些代码来测试请求的 cookie 是否存在有效的用户/会话 ID 对,如果它不存在,我可以简单地从请求中删除身份验证 cookie,这将导致标准的未经授权的重定向。