首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Net核心会话在一段时间后到期

Net核心会话在一段时间后到期
EN

Stack Overflow用户
提问于 2022-09-28 09:57:03
回答 1查看 41关注 0票数 0

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

我在我的项目中使用了Net标识。您可以在下面的Startup.cs中看到我的命令。

代码语言:javascript
复制
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();
    }
EN

回答 1

Stack Overflow用户

发布于 2022-09-28 10:07:25

在ConfigureService方法中,可以更新cookie的配置。增加Expiration时间并使SlidingExpiration变为真哪个CookieAuthenticationOptions.SlidingExpiration性质

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

代码语言:javascript
复制
public void ConfigureServices(IServiceCollection services)
{
   // ....
   services.ConfigureApplicationCookie(options => {
       options.ExpireTimeSpan = TimeSpan.FromMinutes(600);
       options.SlidingExpiration = true;
   });
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73879506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档