Я работаю над приложением ASP.NET Core 2.0 с Identity для управления подключениями пользователей.
У меня есть несколько собственных Менеджеров, Магазинов и Провайдеров для нужд моего приложения:
services.AddIdentity<Utilisateur, Profil>().AddUserManager<CustomUserManager<Utilisateur>>().AddRoleManager<CustomRoleManager>().AddDefaultTokenProviders();
services.AddTransient<IUserStore<Utilisateur>, UserStore>();
services.AddTransient<IRoleStore<Profil>, ProfileStore>();
services.AddTransient<IPermissionProvider, PermissionProvider>();
Я установил cookie-файл приложения для аутентификации Identity:
app.UseAuthentication();
А
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.HttpOnly = true;
options.ExpireTimeSpan = TimeSpan.FromMinutes(60);
// If the LoginPath isn't set, ASP.NET Core defaults the path to /Account/Login.
options.LoginPath = new PathString("/Connexion/Login");
options.LogoutPath = new PathString("/Connexion/SignedOut");
// If the AccessDeniedPath isn't set, ASP.NET Core defaults the path to /Account/AccessDenied.
options.AccessDeniedPath = new PathString("/Connexion/AccessDenied");
options.SlidingExpiration = true;
});
Проблема в том, что пользователь автоматически отключается через 30 минут, даже если он не находится в режиме ожидания и использует приложение в данный момент.
Как я могу обновить или заново создать файл cookie для аутентификации, чтобы избежать этой проблемы?
Я пытался создать метод для обновления куки, но он, кажется, не очень хорошо работает ... Пользователь отключается даже после этого.
[HttpPost]
[RefreshLogin]
[RequiresPermission("Pages.Modification")]
public IActionResult SavePagesOrder()
{...}
и метод:
public class RefreshLoginAttribute : Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute
{
public override async Task OnActionExecutionAsync(Microsoft.AspNetCore.Mvc.Filters.ActionExecutingContext context, Microsoft.AspNetCore.Mvc.Filters.ActionExecutionDelegate next)
{
await context.HttpContext.RefreshLoginAsync();
await next();
}
}
У вас есть идея решить мою проблему?