【问题标题】:VerifyUserTokenAsync returns false when the user is not persisted当用户未持久化时,VerifyUserTokenAsync 返回 false
【发布时间】:2021-11-19 10:07:02
【问题描述】:

考虑到PhoneNumber 作为我自定义用户的Username,我只需要验证电话号码的用户就可以注册。所以我创建了一个临时用户并为他/她生成了验证令牌,并将令牌发送回提供的电话号码,如下所示:

public Task Handle(SendSignupSmsRequest request)
{
   var user = new CustomUser { UserName = request.PhoneNumber, PhoneNumber = request.PhoneNumber };
   var token = await _userManager.GenerateUserTokenAsync(user, TokenOptions.DefaultPhoneProvider, "sign-up");

   // send token to provided phone number
}

在注册请求处理程序中,我尝试重新创建相同的临时用户并验证令牌,如下所示:

public Task Handle(SignupRequest request)
{
   var user = new CustomUser { UserName = request.PhoneNumber, PhoneNumber = request.PhoneNumber };
   var tokenVerified = await _userManager.VerifyUserTokenAsync(user, TokenOptions.DefaultPhoneProvider, "sign-up", request.Token);

   if (!tokenVerified)
      // do something;
   else
      // do something else
}

我看到tokenVerified 总是False!我尝试了以下方法来找出我的代码有什么问题:
使用相同的临时用户验证令牌 ====> 验证成功

var user = new CustomUser { UserName = request.PhoneNumber, PhoneNumber = request.PhoneNumber };
var token = await _userManager.GenerateUserTokenAsync(user, TokenOptions.DefaultPhoneProvider, "sign-up");

var tokenVerified = await _userManager.VerifyUserTokenAsync(user, TokenOptions.DefaultPhoneProvider, "sign-up", request.Token);

使用创建的新临时用户验证令牌,就像临时用户 ====> 不成功验证

var user = new CustomUser { UserName = request.PhoneNumber, PhoneNumber = request.PhoneNumber };
var token = await _userManager.GenerateUserTokenAsync(user, TokenOptions.DefaultPhoneProvider, "sign-up");
    
user = new CustomUser { UserName = request.PhoneNumber, PhoneNumber = request.PhoneNumber };
var tokenVerified = await _userManager.VerifyUserTokenAsync(user, TokenOptions.DefaultPhoneProvider, "sign-up", request.Token);

【问题讨论】:

    标签: token identity verify


    【解决方案1】:

    这一切都归结为SecurityStamp

    首先,为在发送注册短信请求处理程序中创建的用户分配一个临时安全标记。然后在注册请求处理程序中为重新创建的用户设置相同的安全标记。这样做,令牌将被成功验证。

    【讨论】:

      猜你喜欢
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 2020-10-18
      • 2016-06-24
      • 1970-01-01
      相关资源
      最近更新 更多