Истечение срока действия проверки подлинности куки не перенаправляет на страницу входа в систему
Я использую 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 ответ:
Use Sliding Expiration : смотрите docs
app.UseCookieAuthentication(new CookieAuthenticationOptions() { SlidingExpiration = true, ExpireTimeSpan = TimeSpan.FromMinutes(60) });
Скользящий срок действия для файлов cookie работает следующим образом: при аутентификации устанавливается абсолютное время истечения срока действия (т. е. сейчас+60мин). При последующих запросах время истечения срока действия должно быть сброшено до Нового сейчас+60мин, но это обновление не делается на каждом запросе, потому что это было бы пустой тратой полосы пропускания. Таким образом, только после того, как X% этого скользящего срока действия прошло, печенье обновляется с новой датой истечения. Согласно документам, на ASP.NET X - это 50% от
ExpirationTimeSpan
(30 минут).