【问题标题】:Why Log out after verify phone number in asp.net identity?为什么在asp.net身份验证电话号码后注销?
【发布时间】:2016-11-29 23:59:48
【问题描述】:

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

为什么会这样?

更新
我已将SecurityStampValidatorvalidateInterval 设置为0。

【问题讨论】:

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


    【解决方案1】:

    ChangePhoneNumberAsynchas this line:

    await UpdateSecurityStampInternal(user).WithCurrentCulture();
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 但我只确认电话号码,不会更改!
      • 手机确认后如何防止更改安全印章?
      猜你喜欢
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多