zoukankan      html  css  js  c++  java
  • 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 里面的实现方法拷贝过来,再换成数据库查询方式就可以了

  • 相关阅读:
    asp.net连接SQL server,SQLLite,Oracle,Access数据库
    c#中RadioButtonList选中后不整体刷新页面保持选中状态
    c#中onclick事件请求的两种区别
    java中从实体类中取值会忽略的的问题
    Groovy自定义函数实现时间表达式解析
    广度优先搜索、狄克丝特拉算法
    创建型模式
    数组、链表、散列表、图、树、队列、栈
    nginx.conf
    Nginx笔记一
  • 原文地址:https://www.cnblogs.com/Qintai/p/14470942.html
Copyright © 2011-2022 走看看