2016-08-23 4 views
0

Я хочу, чтобы пользователь вышел из системы после таймаута сеанса и в logout я вставляю значение этого конкретного пользователя, внося изменения в свой флаг, например, если его флаг равен 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 отправки идентификатора пользователя к действию, но проблемы идент в сессии он истекает время из

<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

Try наоборот, то есть, что логин должен заполнить ваш сеанс, и по истечении сеанса пользователь автоматически выйдет из системы.

Сделайте это с помощью фильтра над вашим приложением или контроллером, который проверяет входную переменную сеанса и перенаправляет, если она не существует.

Для примера использования 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