回答
你可以嘗試這樣的事:
public class SessionExpireAttribute : ActionFilterAttribute {
public override void OnActionExecuted(ActionExecutedContext filterContext) {
base.OnActionExecuted(filterContext);
}
public override void OnActionExecuting(ActionExecutingContext filterContext) {
if (filterContext.HttpContext.Session != null) {
if (filterContext.HttpContext.Session.IsNewSession) {
var sessionCookie = filterContext.HttpContext.Request.Headers["Cookie"];
if ((sessionCookie != null) && (sessionCookie.IndexOf("ASP.NET_SessionId") >= 0)) {
// redirect to login
}
}
}
}
}
+1。您可能要檢查,如果該請求是AJAX,然後設置內容型'「文/ JavaScript的」'和響應身體'「document.location =‘redirecturi’」'。 – jgauffin
@jgauffin我在MVC新的,這樣你們可以給「document.location =「redirecturi」示例代碼,怎麼辦? –
你試過現有授權過濾器?
授權過濾器與會話超時無關。 –
如上所述..嘗試這個
public class SessionExpireAttribute : ActionFilterAttribute {
public override void OnActionExecuting(ActionExecutingContext filterContext) {
if (filterContext.HttpContext.Session != null) {
if (filterContext.HttpContext.Session.IsNewSession) {
filterContext.Result = new RedirectResult("/");//redirect to home page
}
}
}
}
,然後通過動作或控制器[SessionExpire]
還有更多這裏比滿足眼睛應用此過濾器。這是一個更完整的OnActionExecuting,它使用了上面已經討論過的相同的概念,但增加了一些。有關更多信息,請參閱行內評論。被調用的「InitializeSession」是一個自定義函數,它創建會話狀態中運行該站點所需的基本屬性。 「AlertWarning」是用於顯示警報的Helper例程。其他一切都是樣板代碼。
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var bRequiresAuthorization =
(filterContext.ActionDescriptor.GetCustomAttributes(typeof(AuthorizeAttribute), false).Length > 0) ||
(filterContext.Controller.GetType().GetCustomAttributes(typeof(AuthorizeAttribute), false).Length > 0);
if (filterContext.HttpContext.Session != null)
{
if (filterContext.HttpContext.Session.IsNewSession)
{
//New session. Initialize Session State
bool b = InitializeSession(null);
if (bRequiresAuthorization)
{
//Action requested requires authorized access. User needs to authenticate this
//new session first, so redirect to login
string cookie = filterContext.HttpContext.Request.Headers["Cookie"];
if ((cookie != null) && (cookie.IndexOf("_SessionId=") >= 0))
{
//An expired session cookie still resides on this PC, so first alert user that session is expired
AlertWarning("Session timed out due to inactivity. Please log in again.");
}
filterContext.Result = RedirectToAction("LogOut", "Authentication");
}
}
}
base.OnActionExecuting(filterContext);
}
- 1. 在ASP.NET MVC中處理會話超時
- 2. 春季會話超時處理mvc
- 3. CAS是如何處理會話超時
- 4. 處理magento會話超時
- 5. 處理會話超時?
- 6. JSF,會話超時處理
- 7. 會話超時處理
- 8. 在ASP.NET MVC會話超時
- 9. 如何在asp.net中處理會話mvc
- 10. 在XrmServiceContext中處理會話超時
- 11. mvc會話超時
- 12. 在.NET MVC中處理會話超時Razor
- 13. 自定義會話超時處理
- 14. 如何增加MVC中的會話超時3
- 15. 處理會話超時丟失數據
- 16. 客戶端處理會話超時
- 17. 處理會話變量超時
- 18. JSF會話超時&異常處理
- 19. Grails:處理HTTP會話超時事件
- 20. 處理會話超時而回發
- 21. 客戶端處理會話超時
- 22. Spring 3.1:處理會話超時
- 23. ASP.NET MVC Global.asax中的會話超時處理
- 24. 在通用http處理程序中處理會話超時
- 25. 如何在Play Framework中處理會話超時或到期?
- 26. 如何處理會話超時在asp.net 3.5
- 27. 如何在JavaScript中處理MVC3中的會話超時?
- 28. 如何在會話超時後處理AJAX中的重定向?
- 29. 如何保持會話超時處理在Android應用程序
- 30. 如何在Angular 2/Java Spring Boot中處理會話超時
樣板Visual Studio的MVC應用程序做到這一點。我建議看看它。 –
謝謝大衛。我無法找到它。任何鏈接將不勝感激。感謝 – vivek
我已經編輯你的問題,使之更重要的一點,並使用標籤與自己相關。 – jgauffin