【发布时间】:2021-03-01 21:47:26
【问题描述】:
我最近遇到了我的 net5.0 应用程序(从 net core 3.1 升级)的问题。我正在使用 Microsoft.AspNetCore.Identity 登录,它工作得很好。将其部署到生产机器后,登录仍然有效,我收到了我的 cookie。但是在第二天调用 url 之后,尽管有我的身份验证 cookie(它的有效期为 30 天),但我没有登录。在我托管在 IIS 上的本地计算机上,它工作正常。以下是我的部分代码:
Startup.cs:
配置服务
services.ConfigureApplicationCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromDays(30);
options.SlidingExpiration = true;
options.LoginPath = new PathString("/Account/Login");
options.LogoutPath = new PathString("/Account/Logoff");
options.Cookie.Name = "MyApplication";
options.Cookie.IsEssential = true;
});
我正在使用 ProtectPersonalData 属性通过密钥环加密数据库中的用户数据:
services.AddIdentity<ApplicationUser, IdentityRole>(config =>
{
config.SignIn.RequireConfirmedEmail = true;
config.Stores.ProtectPersonalData = true;
config.Stores.MaxLengthForKeys = 128;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
配置
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
这是 Firefox 中的 cookie: [cookie][1]
据我了解,该 cookie 应该在对该域的每次请求时发送到服务器。即使 Firefox 声明,它是在我请求的确切时间最后一次访问的,但它没有任何效果。
如果您需要任何进一步的代码,请告诉我。任何帮助表示赞赏!
[1]:https://i.stack.imgur.com/UTSuR.png
【问题讨论】:
-
你设置了token过期时间吗?
-
我正在使用“options.ExpireTimeSpan = TimeSpan.FromDays(30);”对于我的 ApplicationCookie,如上所示。我的 PasswordSignInAsync 不包含任何过期时间逻辑
-
是cookie过期时间,需要配置token过期时间。
-
我不明白你在说什么。令牌不只是用于电子邮件确认、密码重置等吗?
标签: c# .net authentication cookies identity