• IdentityServer4内存模式改造成Db查询


    这篇文章主要介绍 identity server4  3.x的版本,目前最新已经是4.x版本,其实完全可以用 identityserver4的EF版本数据源基于DB,以下是基于 identityserver基于内存版,用户模块改写成查询 DB,外部客户端和scheme 的配置任然是使用json写死的,阅读identityserver源码,了解到如何扩展 关于用户登录的配置

     

    准备工作:identity server4的安装模板先安装好,控制台命令行 创建一个基于内存模式的identity server4 项目

    输入dotnet new

     

     

     

    再输入:dotnet new is4inmem。出现“The template "IdentityServer4 with In-Memory Stores and Test Users" was created successfully.” 证明创建好了

     

     

     

     

    一:打开项目找到登录方法  

     

     

     

     

     

    我们只需要 TestUserStoe 这个类换成我们自己的

     

    二:换掉 TestUserStoe

    2.1 新建一个interface IUserInfoervice,在新建实现类:UserInfoervice

    再次打开 TestUserStore 这个类,反编译可以可以到里面的方法,我们 UserInfoervice    也需要实现那4个方法,换成我们自己的用户逻辑

     

     

    2.2注入到IOC容器中:

     

    Services.AddTransient<IUserInfoervice, UserInfoervice>();

     

    2.3 重写 ids4 测试用户的服务

    打开他的源码,AddTestUse方法r的源码,可以看到 这个只是包了一层

     

     

    我们要做的就是全部切换成我们自己逻辑,  替换掉 :TestUserProfileService,替换掉 TestUserResourceOwnerPasswordValidator,这个主要是针对 密码授权模式的,也替换掉

     

     //这句话 可以直接注释掉了,因为我们 UserInfoervice 已经注册IOC了
    //   builder.Services.AddSingleton(new TestUserStore(users));

    TestUserProfileService源码,新建立 CustomProfileService这个类继承 IProfileService 实现 方法

     

     

    TestUserResourceOwnerPasswordValidator 新建立

    CustomUserResourceOwnerPasswordValidator  这个类继承 IResourceOwnerPasswordValidator实现 方法

     

     

     

    最后在IOC中替换:

     

     

     

    三:控制器中 把 TestUserStore 替换成  UserInfoervice

     

     

     

     

    到此,就已经切换成功了

     

    四 关注点 3个方法,可以换成自己的登录逻辑

     

    FindBySubjectId     // 根据SubjectId查找用户

    ValidateCredentials //根据用户名和密码,验证

    FindByUsername      //根据查找用户名进行查找

     

    UserInfoervice可以先把 TestUserstoke 里面的实现方法拷贝过来,再换成数据库查询方式就可以了

  • 相关阅读:
    JavaScript Date对象
    BOM 和 DOM
    JS变量声明方式
    CSS3 选择器
    Python文件操作
    第十三章 迭代器、生成器、 装饰器
    python专题 --- 递归
    React JSX
    ES6——面向对象应用
    ES6——面向对象-基础
  • 原文地址:https://www.cnblogs.com/Qintai/p/14470942.html
Copyright © 2020-2023  润新知