我在我的项目中使用 asp.net Identity。在VerifyPhoneNumber
查看,当用户确认他的电话号码时,他已注销(.AspNetApplicationCookie
已移除。我从“资源”选项卡“检查 chrome”中检查了这一点)。
代码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);
为什么会出现这种情况?
Update
我已经设定validateInterval
for SecurityStampValidator
to 0.
The ChangePhoneNumberAsync
有这条线 https://aspnetidentity.codeplex.com/SourceControl/latest#src/Microsoft.AspNet.Identity.Core/UserManager.cs:
await UpdateSecurityStampInternal(user).WithCurrentCulture();
这会导致 cookie 过期或重新验证。
如果你不想要它,你必须继承UserManager<TUser>
类(创建您的 CustomUserManager 类),然后覆盖ChangePhoneNumberAsync
方法。只需使用相同的代码 https://aspnetidentity.codeplex.com/SourceControl/latest#src/Microsoft.AspNet.Identity.Core/UserManager.cs没有UpdateSecurityStampInternal
line.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)