上一节课拿到的AccessToken和IdToken

实现ProfileService类

在服务端 添加ProfileService类

需要继承IProfileServiuce

用到的画图工具

IprofileService接口里面有两个方法, 我们去实现这两个方法
这里是否激活,我们先设置为false

IsActive当我们拿到Subject的时候再去设置为true,也就是我们这里拿到的sub的值为4的这个。

对应我们数据里的这个用户id。AspNetUsers这个表的主键。用户的id是4

获取到subjectId

然后根据SubjectId拿到用户的信息。注入UserManager。命名空间在AspNetCore.Identity命名空间下

通过SubjectId获取到用户的信息,SubjecId其实就是User表的用户Id


精简为一行代码。当用户对象不为空就返回true,那么IsActive就是True

加上await 和 async

我们之前没有启用用户的锁定,如果用户输入错 次数太多。LockoutEnabled就会锁定

需要对IssuedClaim进行赋值。这些Claims就是从用户里来的

Claim在System.Security.Claims这个命名空间下

我们需要通过GetClaimFormUser这个方法来返回IssuedClaims

JwtClaimTypes返回的都是常量,说白了就是固定的字符串

userName也就是数据库内的Administrator

通过user获取到Roles的列表然后 添加到Claims里面

还需要加上一个头像的属性。在ApplicationUser里面加上了Avatar头像的这么一个属性值

加上Avatar的Claim

把这个方法名字加上Async重命名一下

这样最终返回了IssuedClaims

注入ProfileService类

在StartUp里面

数据迁移

因为我们修改了ApplicationUser,所以需要对数据库做更新。因为这里我们增加了Avatar头像的属性,需要对数据库做迁移



更新数据库

这样我们头像的字段就加上来了

把AspNetUsers表内的数据删除掉

Seed初始化数据

删掉数据之后,执行我们的seed方法


头像地址是从网上随便找的图片的地址

然后把默认的用户添加到administrator的角色里面

运行 role添加失败了


也有个succeed,如果失败了就抛出一个异常

再次运行,又报了个错误

随即的一个值,用来设置密码的,这里我们先随便设置成admin

运行程序  依然报错

主键可能需要改一下,因为它没有办法自动生成

ApplicationUserRole也是同样的

再去做数据迁移

生成的内容比较多,但是有用的就是你这一句

角色也加了一些东西

然后更新数据库

依然失败

因为用户还没有创建成功就去给用户设置角色了造成了这个错误

还是有错-_-!

调试,返回了密码规则错误的问题

小写、特殊符号、大写、长度这些密码的规则我们设置为false

用户创建成功 返回了succeed

user表有数据了

头像字段也有值了

RoleId给了个1

角色表

测试

把cookie都清除掉

启动客户端。这样就可以使用123456 简单的密码来登陆

点同意。登陆成功之后跳转回去

再次清除缓存,登陆
 

客户端

这里调试用VScode调试


可以看到只有三个Claims

服务端需要设置这里。这里做映射,从prolfileServie拿到Claim做一个绑定,绑定过之后才可以从从ProfileService返回里面去拿到


这个端口可以通过Access_token拿到

再次运行测试

role和avatar都拿到了

客户端的设置。openIdConnect这里自己要做一个映射

如果不这么做也可以通过Access_Token

这里是发起了另外一个请求到我们5000的端口

其实就相当于,发送了一次请求,把获取的token又访问了一次这个地址拿到UserInfo的这几个信息

我们还可以把idToken复制到jwt.io解密出来

他没有包含头像的信息,这是因为它是另外发起一个请求到endPoint去哪头像这些信息
所以客户端的这里,GetCliamsFormUserInfoEndpoint设置为了True

这里注意,设置的也就是页面上拿到的IdToken

服务端设置,这里为true,那么这些信息都被加密在idtoken里面

客户端这里就不用设置了。

客户端这里也可以去掉了

一种是通过发起另外的请求去获取用户的信息,另外一种是在访问idToken直接就带过来了
客户端和服务端再重启
客户端的cookie再次清除


这样用户的信息直接在idToken里面都返回了

解密下idToken

25.ProfileService实现(调试)的更多相关文章

  1. 25、驱动调试之打印到proc虚拟文件

    1.dmesg指令是通过读/proc/kmsg来获取打印信息,也可以通过cat /proc/kmsg打印: 说明:kmsg是环形缓存区,只能读一次 2.内核中fs/proc目录下有相关文件,比如pro ...

  2. iOS各种调试技巧豪华套餐

    转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global Break ...

  3. xcode的调试技巧

    转自:http://www.cnblogs.com/daiweilai/p/4421340.html#biyouji 目录 前言逼优鸡知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global ...

  4. 第25章 SEH结构化异常处理_未处理异常及向量化异常

    25.1 UnhandledExceptionFilter函数详解 25.1.1 BaseProcessStart伪代码(Kernel32内部) void BaseProcessStart(PVOID ...

  5. Extjs4常见的调试问题

    Extjs4常见的调试问题: 1.fireFn.apply of undefined方法名称对不上 2.新增页面居左解决:页面的宽度和高度需要调整,内容items有问题:或者:layout : 'co ...

  6. 使用Xcode进行调试

    目录 知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints)打印的艺术 NSLog 开启僵尸对象(Enab ...

  7. IOS各种调试

    IOS各种调试技巧豪华套餐   目录 前言逼优鸡知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints)打印 ...

  8. ASP.NET Core分布式项目实战

    ASP.NET Core开发者成长路线图 asp.net core 官方文档 https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/ ...

  9. 【笔记目录1】ASP.NET Core分布式项目实战

    当前标签: ASP.NET Core分布式项目实战 共2页: 1 2 下一页  35.Docker安装Mysql挂载Host Volume GASA 2019-06-20 22:02 阅读:51 评论 ...

随机推荐

  1. 基于Darwin实现的分布式流媒体直播服务器系统

    各位EasyDarwin开源项目的爱好者,您好,这篇博客的年限有点老了,目前EasyDarwin已经采用全新的云平台架构,详细可以参考博客:http://blog.csdn.net/xiejiashu ...

  2. IIS发布问题集锦

    1. 2.文件都是Not Found 3.删除了PrecompiledApp.config文件就可以了: 4.预编译:http://blog.darkthread.net/post-2012-04-2 ...

  3. .Net反射机制

    现在谈.Net反射机制本不在计划中,因为本打算研究完设计模式后再去学习别的技术:但迫于设计模式系列一创建型之(抽象工厂模式)一章中遗留问题,才不得已在设计模式之游中插入本篇文章!签于本人对反射理解也不 ...

  4. mooc课程mit6.00.1x--problem set1解决方法

    counting vowels: 计算字符串中含有元音字母aeiou的数量 char = 'azcbobobegghakl' num = 0 #利用in方法直接查找字符串char中含有的元音字母数量 ...

  5. 设计模式 - 单件模式(singleton pattern) 具体解释

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u012515223/article/details/28595349 单件模式(singleton ...

  6. vue --- axios , vuex

    一 . 内容回顾 1.webpack(前端中工作,项目上线之前对整个前端项目优化) - entry:整个项目的程序入口(main.js或index.js): - output:输出的出口: - loa ...

  7. ansible3

    一.setup模块 ansible的setup模块主要用来收集信息,查看参数: [root@localhost ~]# ansible-doc -s setup # 查看参数,部分参数如下: filt ...

  8. Algorithm: Sieve of Eratosthenes

    寻找比n小的所有质数的方法. 2是质数, 2*i都是质数,同样3是质数,3*i也都是质数 代码如下 int n; vector<, true); prime[] = prime[] = fals ...

  9. RQNOJ 57 找啊找啊找GF:01背包

    题目链接:https://www.rqnoj.cn/problem/57 题意: sqybi在七夕这天太无聊了,所以他想去给自己找GF. 总共有n个MM. 搞定第i个MM要花费rmb[i]块大洋.rp ...

  10. display:inline-bock的注意

    前端当一组元素设置为display:inline-block;时,每个元素之间的回车会被作为一个空格.