使用用户名或电话号码登录IdentityServer 4

时间:2019-12-22 09:16:54

标签: c# authentication oauth-2.0 identityserver4 openid

在我们的产品中,我们有与API交互的移动应用,该API针对IdentityServer 4进行身份验证, 该企业对使用同一个人的电话(SMS身份验证)或用户名身份验证的登录设置了要求。 我找到了这个示例项目,以便通过手机短信登录,效果很好: IdentityServer4.PhoneNumberAuth

我还如何结合用户名登录?

1 个答案:

答案 0 :(得分:0)

创建一个继承自IUserStore的自定义UserStore。请参考以下代码段,以用户名,电子邮件或电话号码登录。

public partial class UserStore : IUserStore<ApplicationUser>
{
    //Other method implementation 

    public Task<ApplicationUser> FindByNameAsync(string normalizedUserName, CancellationToken cancellationToken)
    {
        cancellationToken.ThrowIfCancellationRequested();
        ThrowIfDisposed();

        if (normalizedUserName == null)
        {
            throw new ArgumentNullException(nameof(normalizedUserName));
        }

        return Task.FromResult(authDbContext.Users.FirstOrDefault(u => u.NormalizedUserName == normalizedUserName
        || u.PhoneNumber == normalizedUserName || u.NormalizedEmail == normalizedUserName));
    }
}