2016-08-23 124 views
0

我想在會話超時和註銷後讓用戶註銷我插入該特定用戶的值在他的國旗中進行更改,就像他的國旗是1他已登錄並且如果他的國旗是0他將註銷所以我希望在註銷時將標誌值從1更改爲0。插入用戶註銷信息會話超時後?

我註銷操作:

public ActionResult Logout(short? UserId12) 
    { 
     FormsAuthentication.SignOut(); 
     //Session["UserName"] = null; 
     //Session["BranchCode"] = null; 
     //Session["GroupID"] = null; 

     USER_LOGIN obj = new USER_LOGIN(); 

     obj = db.USER_LOGIN.Find(UserId12); 

     obj.LOGOUTFLAG = 0; 
     obj.LOGOUT_DATETIME = System.DateTime.Now; 
     db.SaveChanges(); 

     Session.RemoveAll(); 
     return RedirectToAction("Login", "Account"); 

    } 

我試圖通過jquery的發送用戶ID的行動,但要解決的問題,這是用戶ID是在會話到期的超時

<script> 
    var url= '@Url.Action("Logout", "Account", new { UserId12 = Session["UserId1"] })'; 
    var sessTm = @Session.Timeout 
    sessTm = sessTm * 60; 
    sessTm = sessTm - 10; 
    function mTmout() { 
     sessTm -= 1; 
     if (sessTm == 0) { 
      window.location = url; 
     } else { 
      setTimeout(mTmout, 1000); 
     } 
    }; 

    $(document).ready(function() { 
     $(".tmout").html(sessTm); 
     setTimeout(mTmout, 1000); 
    }); 

回答

0

嘗試相反,那就是登錄應該填充你的會話,當會話過期時,用戶會自動出現登出。

通過在您的應用程序或控制器上進行篩選來檢查登錄的會話變量並在不存在的情況下重定向。

例如使用FilterConfig.cs在「App_Start」文件應用覆蓋面廣:

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.add(new LoginFilter()); 
    } 
} 

LoginFilter:

public class LoginFilter : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if(HttpContext.Current.Session["IsLoggedIn"]==false) //or null 
     { 
     //redirect to login page 
     } 
    } 
} 

你需要讓你不實現這個作爲你的登錄控制器獲得無限重定向循環:Skip global filter