上一节课拿到的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. [转] 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术

    转自:http://blog.csdn.net/freshlover/article/details/11579669 Ⅰ.绝对定位居中(Absolute Centering)技术 我们经常用marg ...

  2. Angular入门(一) 环境配置

    angular/cli 安装 ♦ npm uninstall -g angular-cli /cnpm install -g angular-cli ※采用npm安装失败: Missing write ...

  3. github Merge method

    About merge methods on GitHub - User Documentation https://help.github.com/articles/about-merge-meth ...

  4. Linux入门基础(一)——ls、mkdir命令

  5. [2018-08-25]模板引擎Razor Engine 用法示例

    好久没写博客了,回宁波后最近几个月一直忙些线下的事情. 敲代码方面脱产有阵子了,生疏了,回头一看,这行业果然更新飞快. 最近线下的事情基本忙完,准备开始干回老本行,最重要的一件事就是升级abplus库 ...

  6. drawable canvas使用

    /** * Drawable 就是一个可画的对象, * 其可能是一张位图(BitmapDrawable), * 也可能是一个图形(ShapeDrawable), * 还有可能是一个图层(LayerDr ...

  7. 3D 图片播放焦点图插件Adaptor

    在线演示 本地下载

  8. BZOJ 3083 遥远的国度 树链剖分+线段树

    有换根的树链剖分的裸题. 在换根的时候注意讨论. 注意数据范围要开unsigned int或longlong #include<iostream> #include<cstdio&g ...

  9. SDUT 2133 数据结构实验之栈三:后缀式求值

    数据结构实验之栈三:后缀式求值 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 对于一个基于二元运算符的后缀表示式(基本操作数都是 ...

  10. mysql too many connections 解决方法

    1.mysql -u root -p 回车输入密码进入mysql   2.show processlist; 查看连接数,可以发现有很多连接处于sleep状态,这些其实是暂时没有用的,所以可以kill ...