Uwakpeter Ответов: 1

Как установить скользящий срок действия в приложении MVC 5


У меня есть приложение, построенное с использованием MVC 5, у нас есть сценарий, в котором пользователи перенаправляются на страницу входа, когда тайм-аут сеанса по умолчанию истек, даже когда пользователь все еще набирал текстовое поле. Я хочу, чтобы пользователи перенаправлялись на страницу входа только тогда, когда страница простаивает более 15 минут, но не тогда, когда пользователи очень заняты. В веб-формах мы используем для установки скользящего истечения срока действия значение true в конфигурационном файле, но это не работает в MVC. Я буду признателен за любую помощь.

Что я уже пробовал:

Действие Входа В Систему:

  [HttpPost]
     [AllowAnonymous]

public ActionResult Login(LoginViewModel model, string returnUrl, string command)
   {
      string decodedUrl = "";
      if (!string.IsNullOrEmpty(returnUrl))
          decodedUrl = Server.UrlDecode(returnUrl);
          FormsAuthentication.SetAuthCookie(model.Email, false);

         var authTicket = new FormsAuthenticationTicket(1, user.Email,
         DateTime.Now, DateTime.Now.AddMinutes(15), false, user.Roles);
         string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
         var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName,
         encryptedTicket);
         HttpContext.Response.Cookies.Add(authCookie);
         authCookie.Expires = authTicket.Expiration;

          if (Url.IsLocalUrl(decodedUrl))
              {
                   return Redirect(decodedUrl);
              }
             else
              {
               return RedirectToAction("analytics", "dashboard");
             }
   }


Глобальный код ASAX:

protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
        {
            try
            {
        var authCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
                if (authCookie != null)
                {
                    FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
                    if (authTicket != null && !authTicket.Expired)
                    {
                        var roles = authTicket.UserData.Split(',');
                        HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(new FormsIdentity(authTicket), roles);
                    }
                }
            }
            catch(Exception ex)
            {
                
            }
        }

Richard Deeming

Скользящее истечение срока действия также не имело бы никакого эффекта в веб-формах. Тайм-аут сеанса продлевается только тогда, когда запрос попадает на сервер. Если вы не настроили обработчик событий Javascript, это обычно не происходит, когда пользователь печатает на странице.

Uwakpeter

спасибо, сэр, теперь я понимаю, как это работает на самом деле.

1 Ответов

Рейтинг:
0

Gerry Schmitz

Когда пользователи "очень" что?

Если он просрочен, значит, он просрочен.

Если тайм-аут слишком короткий, в среднем, то продлите его.