Net Core-会话在一段时间后过期



在我的项目中,会话会在一段时间后自动终止。我不知道为什么会这样。例如,用户登录后在6-7分钟内没有采取任何行动。然后,当您单击某个位置时,会话将自动终止并重定向到登录页面。这对我来说是个大问题。因为用户可能会花很多时间写博客。例如,假设我进入一个博客页面并开始写作。我在博客上写了15分钟,然后发布了表格。当我发布表格时,会话被终止,它会把我带到登录页面。我该如何解决这个问题?

我在我的项目中使用Net Core Identity。你可以在下面的Startup.cs中看到我的命令。

public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddDbContext<AppDbContext>(options =>
{
options.UseSqlServer(
Configuration.GetConnectionString("SqlServer"),
config =>
{
config.MigrationsAssembly("Tekno.Migrations");
})
.UseLazyLoadingProxies();
});
services.AddIdentity<User, Role>(options =>
{
options.Password.RequireDigit = true;
options.Password.RequiredLength = Configuration.GetValue<int>("Application:Security:Password:RequiredLength");
options.Password.RequireLowercase = Configuration.GetValue<bool>("Application:Security:Password:RequireLowercase");
options.Password.RequireNonAlphanumeric = Configuration.GetValue<bool>("Application:Security:Password:RequireNonAlphanumeric");
options.Password.RequireUppercase = Configuration.GetValue<bool>("Application:Security:Password:RequireUppercase");
options.Password.RequiredUniqueChars = Configuration.GetValue<int>("Application:Security:Password:RequiredUniqueChars");
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(3);
options.Lockout.MaxFailedAccessAttempts = 3;
options.SignIn.RequireConfirmedEmail = true;
})
.AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders()
.AddErrorDescriber<TurkishIdentityErrorDescriber>();
var emailConfig = Configuration.GetSection("EmailConfiguration").Get<EmailConfiguration>();
services.AddSingleton(emailConfig);
services.AddSingleton<Extension>();
services.AddScoped<IEmailSender, EmailSender>();
services.Configure<DataProtectionTokenProviderOptions>(opt => opt.TokenLifespan = TimeSpan.FromHours(2));
services.AddAutoMapper(typeof(Startup));
}
public void Configure(
IApplicationBuilder app,
IWebHostEnvironment env,
RoleManager<Role> roleManager,
UserManager<User> userManager)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseStatusCodePagesWithReExecute("/home/error/{0}");
app.UseXMLSitemap(env.ContentRootPath);
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
}

在ConfigureService方法中,您可以更新cookie的配置。增加Expiration时间并将SlidingExpiration启用为true,其中CookieAuthenticationOptions.SlidingExpirationProperty:

SlidingExpiration设置为true,指示处理程序在处理超过到期窗口一半的请求时,重新发布具有新到期时间的新cookie

public void ConfigureServices(IServiceCollection services)
{
// ....
services.ConfigureApplicationCookie(options => {
options.ExpireTimeSpan = TimeSpan.FromMinutes(600);
options.SlidingExpiration = true;
});
}

最新更新