我似乎无法清楚地了解OWIN Cookie身份验证中的IsPersistent
如何运作,以下代码是使用IsPersistent
:
var context = Request.GetOwinContext();
var authManager = context.Authentication;
var properties = new AuthenticationProperties { IsPersistent = isPersistence };
authManager.SignIn(properties, identity);
当用户检查/取消选中Remember me
(后面使用IsPersistent
)时,我看不出差异,因为如果我关闭Chrome浏览器并再次打开它以使用该网站,那么Cookie { {1}}仍然存在,即使我选中或取消选中.AspNet.ApplicationCookie
,也可以让我进入。
我已在link上检查了Remember me
的定义:
获取或设置身份验证会话是否在多个请求中保持不变。
但是,由于我认为它仍然有用,所以不要太了解。
设置OWIN cookie身份验证的代码:
IsPersistent
答案 0 :(得分:64)
永久性Cookie将作为文件保存在浏览器文件夹中,直到它们过期或手动删除。即使您关闭浏览器,这也会导致cookie保持不变。
如果IsPersistent设置为false,浏览器将获取会话cookie,当浏览器关闭时会被清除。
现在重启浏览器后会话cookie不会清除的原因是Chrome默认设置。 要修复它,请转到chrome 设置 - > 高级,并在系统部分下取消选中在关闭Google Chrome后继续运行后台应用。
答案 1 :(得分:2)
public void Configuration(IAppBuilder app)
{
//Some Code
app.UseCookieAuthentication(GetCookieAuthenticationOptions());
//Some Code
}
private static CookieAuthenticationOptions GetCookieAuthenticationOptions()
{
var options = new CookieAuthenticationOptions();
{
CookieName = "AuthCookie", //Some cookie settings here
};
var provider = (CookieAuthenticationProvider)options.Provider;
provider.OnResponseSignIn = (context) =>
{
context.Properties.IsPersistent = true;
context.Properties.ExpiresUtc = DateTimeOffset.UtcNow.AddHours(24);
};
return options;
}
答案 2 :(得分:0)
.Net Core 2.2的永久cookie,您可能想尝试一下
示例
var claimsIdentity = new ClaimsIdentity(new[]
{ new Claim(ClaimTypes.Name, "test"),},CookieAuthenticationDefaults.AuthenticationScheme);
HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity), new AuthenticationProperties
{
IsPersistent = true,
ExpiresUtc = DateTime.UtcNow.AddMinutes(30)
});