3
技術我使用的是:我應該在LogOff方法中使用Session.Abandon()嗎?
- MVC V2
- 窗體身份驗證(滑動過期)
- 會話狀態服務器
- 自定義授權屬性
我使用狀態服務器過程爲我的mvc應用程序。在測試期間,當一個經過身份驗證的用戶點擊「LogOff」按鈕時,它會正確地將他們帶到身份驗證屏幕,並且在成功輸入證書後,會將他們記錄下來。但是,它會找到他們以前的會話變量狀態,重新加載我給他們的任何新的權限。這是由於我如何加載用戶在下面的代碼:
public override void OnAuthorization(AuthorizationContext filterContext) {
if (filterContext == null)
throw new ArgumentNullException("FilterContext");
if (AuthorizeCore(filterContext.HttpContext)) {
IUser customUser = filterContext.HttpContext.Session["CustomUser"] as IUser;
if ((customUser == null) || (customUser.Name != filterContext.HttpContext.User.Identity.Name)) {
customUser = new User(filterContext.HttpContext.User.Identity.Name,
filterContext.HttpContext.User.Identity.IsAuthenticated);
}
if (_privileges.Length > 0) {
if (!customUser.HasAtLeastOnePrivilege(_privileges))
filterContext.Result = new ViewResult { ViewName = "AccessDenied" };
}
filterContext.HttpContext.Session["CustomUser"] = customUser;
}
}
所以,你可以看到我存儲我的customUser
在Session
和值是什麼是現有會話牽強,即使用戶已註銷之間(但滑動過期窗口內的重新登錄。
所以,我的問題是,我應該把在AccountController
簡單Session.Abandon()
呼叫我LogOff
方法,或者是有一個更清潔更有利的方式處理這個?