.NET Core 标识不会刷新静态文件的身份验证 cookie 并引发 500 错误



i具有.net核心Web API应用程序,其端2上有Angular 2。
我设置了Startup.cs中的以下选项:

中的以下选项。
options.Password.RequiredLength = 5;                                              
options.Password.RequireDigit = false;
options.Password.RequireLowercase = false;
options.Password.RequireUppercase = false;
options.Password.RequireNonAlphanumeric = false;
options.SecurityStampValidationInterval = TimeSpan.FromMinutes(1);
options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
options.Lockout.MaxFailedAccessAttempts = 100;
options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(14);
options.Cookies.ApplicationCookie.LoginPath = "/api/signin/signin";
options.Cookies.ApplicationCookie.LogoutPath = "/api/signin/signout";
options.User.RequireUniqueEmail = false;

so,

  1. 用户已记录 - 设置了auth cookie。

  2. 60秒后 - 呼叫 api/*终点将此cookie更新为新值。.因此调用工作

  3. 但是,请致电 html/js 文件不更新cookie-他们继续使用先前的cookie,现在可能与会话没有绑定,这意味着我们获得 500 错误,因为它无法做任何事情。

  4. 加载任何 api/*终点更新cookie和 html/js 文件再次工作。

因此,简而言之 - 这个问题似乎与Auth Cookie有关所有静态内容的刷新。当用户登录时,它的工作正常。

我该如何解决?预先感谢。

根据文档部分Introduction to working with static files in ASP.NET Core

静态文件模块提供 no 授权检查。

解决方案(来自同一篇文章(:

  • 将它们存储在wwwroot之外,并且静态文件中间件
  • 访问的任何目录
  • 通过控制器操作为他们服务,返回应用授权的FileResult

因此,基本上,您必须不断提出一些请求,以更新会话或为静态文件创建一些虚拟控制器。

最新更新