我正在使用 EF core 在 asp.net core 2.0 中开发 API。我已经在中配置了身份cookie身份验证startup.cs
如下。
services.ConfigureApplicationCookie(options =>
{
// Cookie settings
options.Cookie.HttpOnly = true;
options.Cookie.Name = "example-cookie-name";
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
options.Cookie.SameSite = SameSiteMode.None;
options.ExpireTimeSpan = TimeSpan.FromDays(14);
options.SlidingExpiration = true;
options.Cookie.Expiration = TimeSpan.FromDays(14);
});
当用户登录 api 时,它会创建一个 cookie,将过期时间设置为1969-12-31T23:59:59.000Z
(摘自 Chrome 浏览器 F12)。经过一段时间(20-30)分钟后,所有的索赔都不再存在。
Also, User.Identity.IsAuthenticated
已设置为false
。因此,我无法解析数据库上下文(利用声明值)。
这是 ASP.NET Identity Core 中的预期行为吗?如果是这样,我如何使用中间件解决方案来删除 cookie 或其他一些解决方法来做到这一点?因为一旦cookie被删除,用户就可以重新登录。
内容已更新
services.AddIdentity<User, Role>()
.AddEntityFrameworkStores<DataContext>()
.AddDefaultTokenProviders();
Also in
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseAuthentication();
app.UseContextAuthorizeValidatorMiddleware();
app.UseMvc();
}
Inside UseContextAuthorizeValidatorMiddleware
,我查了一下,
public Task Invoke(HttpContext httpContext)
{
var isAuthenticated = httpContext.User.Identity.IsAuthenticated;
//...
return _next(httpContext);
}