我想允許一個新的登錄在ASP.NET MVC中通過同一個帳戶「踢」前一個登錄會話。ASP.NET MVC:PreAuthorize-like事件,併發登錄的良好節流點?
這似乎很清楚,我會給每個瀏覽器一個代表會話ID的烹飪。我將在服務器端緩存中跟蹤當前活動的會話ID。如果已經活躍的用戶嘗試登錄,我將驗證業務邏輯(用戶名,密碼,至少距上次活動15分鐘),然後更新緩存在服務器上的活動會話ID。
現在我的問題是,瀏覽器持有無效的會話ID。在這種情況下注入拒絕或重定向登錄的最佳觀點是什麼?
我可以修改AuthorizeAttribute,但是看起來應該有一個更清潔的地方要做到這一點,不會要求我搜索和替換所有的授權通過一個Global.asax事件屬性,例如,或一個控制器事件(我已經在我的項目中擴展了Controller)。
例如,如果PreAuthorize存在,我會在那裏編寫一些代碼來測試請求的Cookie,以查找有效的用戶/會話ID對,如果它不存在,我可以簡單地從請求中刪除身份驗證Cookie,這會導致標準的未授權重定向。
SO文章引用http://teknohippy.net/2008/08/21/stopping-aspnet-concurrent-logins/,它在global.asax中建議了Application_PreRequestHandlerExecute。我正在調查使用... – shannon 2012-07-25 03:11:33