Как разлогинить всех пользователей сайта?
Требуется разлогинивать всех пользователей в определенное время каждый день. Для аутентификации используется .AspNetCore.Identity. Можно ли вызвать .SignOutAsync() для всех пользователей? Если нет, то как вызвать этот метод для каждого залогиненого пользователя? Проблема заключается в том, что некоторые из пользователей не умеют обновлять страницу, как бы странно это не звучало. Может быть есть другой путь обновлять их страницы принудительно? Также возникает вопрос, можно ли использовать для этого Quartz, ведь он работает в одном экземпляре для сервера, не создавая экземпляр для каждой отдельной сессии.
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters
{
// укзывает, будет ли валидироваться издатель при валидации токена
ValidateIssuer = true,
// строка, представляющая издателя
ValidIssuer = AuthOptions.Issuer,
// будет ли валидироваться потребитель токена
ValidateAudience = true,
// установка потребителя токена
ValidAudience = AuthOptions.Audience,
// будет ли валидироваться время существования
ValidateLifetime = true,
// установка ключа безопасности
IssuerSigningKey = AuthOptions.GetSymmetricSecurityKey(),
// валидация ключа безопасности
ValidateIssuerSigningKey = true,
};
});
services.ConfigureApplicationCookie(options =>
{
//экспериментировал с этим параметром, но он добавляет
//время к авторизации, а нужно сбрасывать всем , в одно
// и тоже время.
// можно было бы вычислить тут время суток
// но возникает вопрос:
// будет ли оно вычисляться отдельно для каждой
// аутентификации или DateTime.Now будет константой
// вычисленной при старте приложения
options.ExpireTimeSpan = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 15, 25, 00) - DateTime.Now;
});