为什么cookie的ExpireTimeSpan设置不起作用?

Hog*_*ong 3 c# asp.net-core-mvc asp.net-core aspnetboilerplate asp.net-core-identity

我用了:

services.AddAuthenticationCore().ConfigureApplicationCookie(o =>
{
    o.ExpireTimeSpan = TimeSpan.FromHours(1);
    o.SlidingExpiration = true;
});
Run Code Online (Sandbox Code Playgroud)

在 ASP.NET Core MVC 项目的Startup.csExpireTimeSpan中设置我的身份验证 cookie 。

我可以看到登录后网络浏览器中的 cookie 过期时间已正确设置,但每次 30 分钟后都会自动注销,即使我每 10 秒刷新一次网站也是如此。

如果我设置ExpireTimeSpan小于30分钟,可以正确超时,但是expire-time无法刷新。

为什么是30分钟?在哪里可以更改 30 分钟超时设置?或者是在IIS中设置的?

aar*_*ron 5

为什么是30分钟?

这是 ASP.NET Core Identity 的默认设置。

在哪里可以更改 30 分钟超时设置?或者是在IIS中设置的?

ConfigureApplicationCookie号码。在以下时间后致电IdentityRegistrar.Register

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    // ...

    IdentityRegistrar.Register(services);                  // No change
    AuthConfigurer.Configure(services, _appConfiguration); // No change

    services.ConfigureApplicationCookie(o =>
    {
        o.ExpireTimeSpan = TimeSpan.FromHours(1);
        o.SlidingExpiration = true;
    });

    // ...
}
Run Code Online (Sandbox Code Playgroud)

“如果您在 之前定义它services.AddIdentity,您的自定义值将被覆盖。”

https://github.com/aspnet/Identity/issues/1389#issuecomment-324257591