通过 Asp.net 核心身份中的电话号码注册和登录



是否可以不使用电子邮件注册和登录 asp.net 核心身份?

用户只需通过手机号码注册并通过短信验证登录。

一种可能的方法是将身份设置为双因素身份验证。使用用户名代替电子邮件来存储手机号码。若要执行此操作,请在 ApplicationUserManager.Create 中设置RequireUniqueEmail = false

您需要添加自己的代码来检索号码并对其进行验证。确保它始终具有与用户名匹配的相同格式。

在验证用户名的代码中,跳过密码检查(因为密码为空(,但要检查数字。发送带有代码的短信并继续流程。

您可以添加自己的逻辑来创建和验证代码以及代码的有效期。

如果您不依赖应用程序中的Username(就像您从未向用户显示它一样(,则可以将用户名设置为 guid 并跳过电子邮件部分。

对于注册,

var identityUser = new User
                   {
                     Username= Guid.NewGuid(),
                     PhoneNumber= phoneNumber
                   };
           
var result = await _signInManager.UserManager.CreateAsync(identityUser, user.Password);

对于登录,

var user = await _signInManager.UserManager.Users
                   .SingleOrDefaultAsync(x => 
                      x.NormalizedEmail == usernameParam
                   || x.PhoneNumber== usernameParam);
if (user == null)
{
    return Forbid();
}
var result = await _signInManager.CheckPasswordSignInAsync(user, passwordParam, false);
if (result.Succeeded)
{
  //  return new TokenResponse(token, refreshToken);
}

最新更新