我这样设置身份:
services.AddIdentity<User, Role>(options =>
{
//...
})
.AddEntityFrameworkStores<MyDbContext>()
.AddDefaultTokenProviders();
services.ConfigureApplicationCookie(options =>
{
options.Events = new CookieAuthenticationEvents
{
OnRedirectToLogin = ctx => {
ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
return Task.FromResult(0);
},
OnRedirectToAccessDenied = ctx =>
{
ctx.Response.StatusCode = (int)HttpStatusCode.Forbidden;
return Task.FromResult(0);
}
};
options.AccessDeniedPath = null;
options.LoginPath = null;
options.LogoutPath = null;
});
当我使用SignInManager.PasswordSignInAsync
并为true
参数传递isPersistent
时,将创建一个名为AspNetCore.Identity.Application的cookie,其有效期设置为2周,到目前为止没有问题
当我为false
参数传递isPersistent
时,cookie的到期日期未设置,并且在浏览器开发者控制台中看到N / A。当我关闭浏览器并再次打开时,cookie仍然存在,并且我仍然登录。
在Edge浏览器上,过期设置为session
,关闭并打开浏览器会删除cookie。在Opera上,过期设置为1969-12-31T23:59:59.000Z
,但在关闭和打开后,cookie仍然存在。他们对本地主机的行为有没有机会?