码迷,mamicode.com
首页 > 其他好文 > 详细

IdentityServer4实战:自定义用户名和密码校验

时间:2021-04-10 13:30:12      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ide   开发者   使用   设置   red   img   context   https   root   

前言

前几篇中我们使用 用户密码模式 生成的token所使用的用户全部都是模拟的测试用户,通过 AddTestUsers(IdentityServerHost.Quickstart.UI.TestUsers.Users) 方式注入到服务中的,实际项目中用户数据都是从数据库而来,在编译期是不知道都有哪些用户的。本篇笔者介绍如何通过数据库校验用户名和密码的合法性。

IResourceOwnerPasswordValidator 接口

ids4 为开发者提供了一个 IResourceOwnerPasswordValidator 接口,通过实现该接口可以做自己的用户名和密码的校验。

技术图片

该接口约定用户信息校验成功或失败后必须设置  context.Result 的值,在实现代码中我们会对该值就行说明。

自定义 CustomerResourceOwnerPasswordValidator

在项目 MicroShell.IdentityServer4.Server 中新建 CustomerResourceOwnerPasswordValidator 类,实现 IResourceOwnerPasswordValidator 接口,具体代码如下:

/// <summary>
    /// 自定义用户校验
    /// </summary>
    public class CustomerResourceOwnerPasswordValidator : IResourceOwnerPasswordValidator
    {
        protected readonly TestUserStore Users;

        public CustomerResourceOwnerPasswordValidator()
        {
            // 方便起见,这里的用户数据我们还是使用 IdentityServerHost.Quickstart.UI 模板中的,实际项目可以通过数据库访问组件从数据库获取用户
            Users = new TestUserStore(TestUsers.Users); ;
        }

        public async Task ValidateAsync(ResourceOwnerPasswordValidationContext context)
        {
            if (Users.ValidateCredentials(context.UserName, context.Password))
            {
                // 用户名和密码校验成功
                context.Result = new GrantValidationResult(
                    subject: Users.FindByUsername(context.UserName).SubjectId,
                    authenticationMethod: "custom"
                );
            }
            else
            {
                // 用户名和密码校验失败
                context.Result = new GrantValidationResult(TokenRequestErrors.InvalidGrant);
            }

            return;
        }
    }

 

注入 CustomerResourceOwnerPasswordValidator

技术图片

 

本文转载自:https://limitcode.com/detail/60701ab591dfde22104dcf13.html

IdentityServer4实战:自定义用户名和密码校验

标签:ide   开发者   使用   设置   red   img   context   https   root   

原文地址:https://www.cnblogs.com/limitcode/p/14639524.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!