Как установить TimeOut для OwinContext в MVC 5

Когда пользователь получает доступ к веб-сайту и вводит свои учетные данные, которые хранятся в нашей базе данных, мы создаем аутентификацию.

Как установить таймаут? Использование MVC 5.

Моя аутентификация выглядит следующим образом:

        var claims = new List<Claim>();
        claims.Add(new Claim("UserId", user.UserID.ToString()));
        claims.Add(new Claim(ClaimTypes.Name, user.FirstName + " " + user.LastName));
        claims.Add(new Claim(ClaimTypes.Email, user.Email));
        claims.Add(new Claim(ClaimTypes.NameIdentifier, user.UserID.ToString()));
        var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

        var ctx = Request.GetOwinContext();
        var authenticationManager = ctx.Authentication;
        authenticationManager.SignIn(id); 

Ответы

Ответ 1

Способ установить фиксированный временной интервал истечения срока действия - установить свойство ExpireTimeSpan в файле Startup.Auth.cs следующим образом:

// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    ExpireTimeSpan = TimeSpan.FromDays(2)
});

Обратите внимание, что вам также необходимо будет сохранить cookie. В вашем коде вам нужно будет ввести bool в дополнение к имени пользователя и паролю, а затем изменить

authenticationManager.SignIn(id); 

быть

authenticationManager.SignIn(new AuthenticationProperties { IsPersistent = rememberMe }, id); 

Ответ 2

При этом вам не нужно использовать Startup.cs

AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = true, ExpiresUtc = DateTime.UtcNow.AddHours(1), }, id);