我在我的项目中使用asp.net Identity。在VerifyPhoneNumber
视图中,当用户确认他的电话号码时,他已被注销(.AspNetApplicationCookie
已被删除。我从资源标签检查了这个。)
VerifyPhoneNumber
中的ManageController
操作代码:
if (!ModelState.IsValid)
{
return View(model);
}
string phoneNumber = UserManager.GetPhoneNumber(User.Identity.GetUserId());
var result = await UserManager.ChangePhoneNumberAsync(User.Identity.GetUserId(), phoneNumber, model.Code);
if (result.Succeeded)
{
var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
if (user != null)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
}
ViewBag.Message = "Complete";
return View();
}
// If we got this far, something failed, redisplay form
ModelState.AddModelError("", "something wrong!");
return View(model);
为什么会这样?
更新
我已将validateInterval
的{{1}}设置为0。
答案 0 :(得分:2)
ChangePhoneNumberAsync
has this line:
await UpdateSecurityStampInternal(user).WithCurrentCulture();
导致Cookie过期或重新验证。
如果您不想要它,则必须从UserManager<TUser>
类继承(创建CustomUserManager类),然后覆盖ChangePhoneNumberAsync
方法。只需使用the same code而不使用UpdateSecurityStampInternal
行。
答案 1 :(得分:0)
更改用户的任何安全相关信息(即密码/电话号码/电子邮件)会自动导致cookie在默认情况下过期(通过用户翻转的安全标记)