【问题标题】:Why doesn't cookie ExpireTimeSpan setting work?为什么 cookie ExpireTimeSpan 设置不起作用?
【发布时间】:2018-02-27 15:30:35
【问题描述】:

我用过:

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

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

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

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

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

【问题讨论】:

  • 你的意思是 ASP.NET Core,对吧?
  • 你是在IdentityRegistrar.Register(services);之前还是之后打电话?
  • 是的,它是 Asp.net Core,我在 IdentityRegistrar.Register(services) 之前调用;

标签: c# asp.net-core asp.net-core-mvc aspnetboilerplate asp.net-core-identity


【解决方案1】:

为什么是 30 分钟?

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

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

没有。在IdentityRegistrar.Register之后拨打ConfigureApplicationCookie

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;
    });

    // ...
}

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

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

【讨论】:

  • 使用 set options.ValidationInterval 解决了我的问题,我想它可能没有通过 cookie 的有效性检查。
  • 很抱歉在这里提问,但是我在 ASP.NET MVC Standard 中遇到了完全相同的问题,我可以减少过期时间但我无法增加它,您有什么想法吗?
猜你喜欢
  • 2013-12-12
  • 2020-01-05
  • 2011-04-13
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
  • 1970-01-01
相关资源
最近更新 更多