У меня есть приложение, написанное с использованием C#
поверх платформы ASP.NET Core 2.2.
Я использую Identity для управления пользователями и контроля пользователей.В настоящее время каждый раз, когда пользователь закрывает свой браузер и снова открывает приложение, он должен снова войти в систему.
Я хочу изменить имя входа из сеанса на файл cookie, срок действия которого истек через 15 минут после неактивности..
Вот что я добавил в класс запуска
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
services.AddDefaultIdentity<User()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
services.AddAuthentication()
.AddFacebook(facebookOptions =>
{
facebookOptions.AppId = Configuration["Authentication:Facebook:AppId"];
facebookOptions.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
});
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
// This code should be executed after the identity id registered to work
services.ConfigureApplicationCookie(config =>
{
config.SlidingExpiration = true;
config.ExpireTimeSpan = TimeSpan.FromMinutes(15);
config.Cookie.HttpOnly = true;
config.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = ctx =>
{
if (ctx.Request.Path.StartsWithSegments("/api", StringComparison.CurrentCultureIgnoreCase))
{
ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
}
else
{
ctx.Response.Redirect(ctx.RedirectUri);
}
return Task.FromResult(0);
}
};
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
Как вы можете видеть выше, я добавил следующее
config.SlidingExpiration = true;
config.ExpireTimeSpan = TimeSpan.FromMinutes(15);
config.Cookie.HttpOnly = true;
Я ожидаю ExpireTimeSpan
код для преобразования моего имени входа на основе сеанса в файл cookie.Также ожидаем cookie через 15 минут, если пользователь неактивен.SlidingExpiration
должен обновлять время истечения срока действия файлов cookie при каждом запросе HTTP.
Как преобразовать вход в систему на основе сеанса в файл на основе файлов cookie?