0

我想在 ASP.NET MVC 中允许新的登录通过同一帐户“踢”先前的登录会话。

似乎很清楚,我将为每个浏览器提供一个代表会话 ID 的烹饪。我将在服务器端缓存中跟踪当前活动的会话 ID。如果一个已经处于活动状态的用户尝试登录,我将验证业务逻辑(用户名、密码、自上次活动以来至少 15 分钟),然后更新缓存在服务器上的活动会话 ID。

现在我的问题是,浏览器持有无效的会话 ID。对于这种情况,我注入拒绝或重定向到登录的最佳点是什么?

我可以修改 AuthorizeAttribute,但似乎应该有一个更干净的地方来执行此操作,不需要我搜索和替换我的所有 Authorize 属性,例如通过 Global.asax 事件或控制器事件(I'我已经在我的项目中扩展了控制器)。

例如,如果 PreAuthorize 存在,我会在那里编写一些代码来测试请求的 cookie 是否存在有效的用户/会话 ID 对,如果它不存在,我可以简单地从请求中删除身份验证 cookie,这将导致标准的未经授权的重定向。

4

1 回答 1

0

因此,经过一番研究,似乎自定义 AuthorizeAttribute 通常是正确的方法。但是,就我而言,由于我已经实现了自定义角色提供程序,因此只需一行代码即可。这也使我受益,因为我只希望单个角色的会话并发。副作用是任何使用 web.config 来控制角色对静态文件的访问也对会话并发有效。

于 2012-07-26T09:11:27.913 回答