【发布时间】:2019-09-19 03:47:12
【问题描述】:
我得到了一个标准的 MVC5 Web 应用程序,对模板的登录进行了一些修改。
我试图在我登录时创建的 cookie 上设置 30 分钟的过期时间
这是我的登录操作
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
var user = AccountDomain.CheckUserLogin(model.UserName, model.Password);
if (user != null)
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var claims = new List<Claim>
{
new Claim("UserName", user.UserName),
new Claim("FirstName", user.FirstName ?? ""),
new Claim("LastName", user.LastName ?? "")
};
var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);
var claimsPrincipal = new ClaimsPrincipal(identity);
Thread.CurrentPrincipal = claimsPrincipal;
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = model.RememberMe }, identity);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
return View(model);
}
我试过这样做
var exp = new DateTimeOffset().AddMinutes(5);
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = model.RememberMe, ExpiresUtc = exp }, identity);
但 cookie 声明过期:当浏览会话结束时
如果在登录页面上选中了“记住我”,则 IsPersistent 将为真,并将 cookie 的到期时间设置为从登录时间算起的 14 天。
如何手动设置cookie的过期时间?
【问题讨论】:
标签: cookies asp.net-mvc-5 claims-based-identity