是否可以不使用电子邮件注册和登录 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);
}