Я создаю C # (.net core 2.1) Razor Page site.Механизм входа в систему будет работать на основе документации, отсюда - токен в куки (если я правильно понимаю): https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?view=aspnetcore-2.1
Допустим, у меня установлена сессия на 3 минуты, и если пользователь активно использует сайт, яСбрасываю это значение.Если это не так, за 30 секунд до истечения срока действия токена я хочу показать ему сообщение типа «Сделайте что-нибудь, или вы выйдете из системы».
Моя проблема - я не могу найти способ получить это время «истекает».
Вот как я проверяю и сохраняю данные:
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
ReturnUrl = returnUrl;
int iCookieLifeTime = 10;
if (ModelState.IsValid)
{
var user = await AuthenticateUser(Input.UserName, Input.License, Input.Password, Input.KeepLogged);
if (user == null)
{
ModelState.AddModelError(string.Empty, "Invalid login attempt.");
return Page();
}
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, user.UserName),
new Claim("Password", user.Password ) )
};
var claimsIdentity = new ClaimsIdentity(
claims, CookieAuthenticationDefaults.AuthenticationScheme);
var authProperties = new AuthenticationProperties
{
AllowRefresh = true,
ExpiresUtc = DateTimeOffset.UtcNow.AddMinutes(iCookieLifeTime)
};
await HttpContext.SignInAsync(
CookieAuthenticationDefaults.AuthenticationScheme,
new ClaimsPrincipal(claimsIdentity),
authProperties);
return LocalRedirect(Url.GetLocalUrl(returnUrl));
}
Теперь, как я могу вызвать AuthenticationProperties для получения / установки данных из ExpiresUtc на всех моих страницах?Допустим, настройка работает, потому что я определил параметр AllowRefresh = true.Но получить то, что я не знаю, как делать.
В идеальном случае я хотел бы получить его на неполных страницах, как я получаю свои данные аутентификации:
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor;
@if (HttpContextAccessor.HttpContext.User.Identity.IsAuthenticated)
(...)