C# 为什么User.Identity.IsAuthenticated在基于身份Cookie的身份验证中经过一段时间后设置为false

C# 为什么User.Identity.IsAuthenticated在基于身份Cookie的身份验证中经过一段时间后设置为false,c#,cookies,asp.net-identity,asp.net-core-2.0,asp.net-core-webapi,C#,Cookies,Asp.net Identity,Asp.net Core 2.0,Asp.net Core Webapi,我正在用EF core在asp.net core 2.0中开发一个API。我在startup.cs中配置了身份cookie身份验证,如下所示 services.ConfigureApplicationCookie(options => { // Cookie settings options.Cookie.HttpOnly = true; options.Cookie.Name = "example-cookie-name"; options.Cookie.

我正在用EF core在asp.net core 2.0中开发一个API。我在
startup.cs
中配置了身份cookie身份验证,如下所示

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 brower F12)。经过一段时间(20-30)分钟后,所有索赔不再存在

另外,
User.Identity.IsAuthenticated
已设置为
false
。因此,我无法解析数据库上下文(利用声明值)

这是asp.net identity core中的预期行为吗?如果是这样,我如何使用中间件解决方案来删除cookie或其他一些解决方法?因为一旦删除cookie,用户就可以重新登录

内容更新

services.AddIdentity<User, Role>()
.AddEntityFrameworkStores<DataContext>()
.AddDefaultTokenProviders();
useContextAuthorizationMiddleware
中,我检查了这个

public Task Invoke(HttpContext httpContext)
{
  var isAuthenticated = httpContext.User.Identity.IsAuthenticated;
 //...
  return _next(httpContext);
}

注意:您不应该使用
options.Cookie.Expiration
。它被
ExpireTimeSpan
(您也正在设置)替换。您正在呼叫
app.UseAuthentication
?您正在调用
services.AddIdentity
来添加标识,还是调用
services.AddAuthentication
CookieAuthenticationDefaults.AuthenticationScheme
来映射到
HttpContext.User
?看看。@Dean,更新了问题内容,很有趣。你是说在用户登录后的前20分钟,
user.Identity.IsAuthenticated
是真的吗?然后在20分钟后,它被设置为false?同时-检查。我相信这对你的处境也是个好办法。没有院长。您不能在
服务中使用
cookie
选项。附加属性
。它已从core 2.0中删除。在1.xx中,根据文档,这是可能的。
public Task Invoke(HttpContext httpContext)
{
  var isAuthenticated = httpContext.User.Identity.IsAuthenticated;
 //...
  return _next(httpContext);
}