为什么在验证asp.net身份的电话号码后退出?

时间:2016-07-26 11:04:36

标签: asp.net-mvc asp.net-identity

我在我的项目中使用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。

2 个答案:

答案 0 :(得分:2)

ChangePhoneNumberAsync has this line

await UpdateSecurityStampInternal(user).WithCurrentCulture();

导致Cookie过期或重新验证。 如果您不想要它,则必须从UserManager<TUser>类继承(创建CustomUserManager类),然后覆盖ChangePhoneNumberAsync方法。只需使用the same code而不使用UpdateSecurityStampInternal行。

答案 1 :(得分:0)

更改用户的任何安全相关信息(即密码/电话号码/电子邮件)会自动导致cookie在默认情况下过期(通过用户翻转的安全标记)