Истечение срока действия проверки подлинности куки не перенаправляет на страницу входа в систему


Я использую asp.net ядро 1.0, и у меня есть идентичность ASP. Я хочу использовать файлы cookie для настройки срока действия файлов cookie, чтобы, когда страница будет простаивать в течение 20 минут, она перенаправлялась на страницу входа. В настоящее время это не так. Моя настройка:

app.UseIdentity();

Добавить идентичность как:

  services.AddIdentity<CRAMSUser, IdentityRole>(config =>
        {
            config.User.RequireUniqueEmail = true;
            config.Password.RequiredLength = 8;
            config.Cookies.ApplicationCookie.LoginPath = "/Auth/Login";
            config.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents()
            {
                OnRedirectToLogin = ctx =>
                {
                    if (ctx.Request.Path.StartsWithSegments("/api") &&
                    ctx.Response.StatusCode == (int)HttpStatusCode.OK)
                    {
                        ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                    }
                    else
                    {
                        ctx.Response.Redirect(ctx.RedirectUri);
                    }
                    return Task.FromResult(0);
                }
            };
        })
            .AddEntityFrameworkStores<CRAMSContext>()
            .AddDefaultTokenProviders();

Как настроить его так, чтобы он перенаправлялся на страницу входа в систему, сидя без дела в течение часа?

1 2

1 ответ:

Use Sliding Expiration : смотрите docs

app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
    SlidingExpiration = true,
    ExpireTimeSpan = TimeSpan.FromMinutes(60)
});

Скользящий срок действия для файлов cookie работает следующим образом: при аутентификации устанавливается абсолютное время истечения срока действия (т. е. сейчас+60мин). При последующих запросах время истечения срока действия должно быть сброшено до Нового сейчас+60мин, но это обновление не делается на каждом запросе, потому что это было бы пустой тратой полосы пропускания. Таким образом, только после того, как X% этого скользящего срока действия прошло, печенье обновляется с новой датой истечения. Согласно документам, на ASP.NET X - это 50% от ExpirationTimeSpan (30 минут).