上一节课拿到的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. Sqlite 设置默认时间为本地时间

    Sqlite 设置默认时间为本地时间 先设置字段类型为datetime, 再把缺省值设置为datetime( 'now', 'localtime' ) 代码查看如下 Time DATETIME DEF ...

  2. 微信小程序设计指南

    微信小程序设计指南 · 小程序 https://developers.weixin.qq.com/miniprogram/design/index.html

  3. AsyncTask==Handler+Thread对比使用说明

    AsyncTask能够合理且轻松使用UI线程,该类允许执行后台操作和发送结果到UI线程而不需要操作threads或handlers. AsyncTask是针对Thread和Handler代替而封装好的 ...

  4. CF148D. Bag of mice(概率DP)

    D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...

  5. MV45AOZZ 销售订单增强点

    [转自 http://blog.csdn.net/zhongguomao/article/details/6712580]choose the table VBAP or VBAK ( dependi ...

  6. PYTHON调用C接口(基于Ctypes)实现stein算法最大公约数的计算

    相关环境配置 mingw,选择相应的32位.64位的版本,主要用于编译动态链接库dll文件,可用vs替代,这里我选择轻量级的mingw windows64位地址:https://sourceforge ...

  7. Machine Learning in Action(4) Logistic Regression

    从这节算是开始进入“正规”的机器学习了吧,之所以“正规”因为它开始要建立价值函数(cost function),接着优化价值函数求出权重,然后测试验证.这整套的流程是机器学习必经环节.今天要学习的话题 ...

  8. 负载均衡,会话保持,session同步(转)

    一,什么负载均衡一个新网站是不要做负载均衡的,因为访问量不大,流量也不大,所以没有必要搞这些东西.但是随着网站访问量和流量的快速增长,单台服务器受自身硬件条件的限制,很难承受这么大的访问量.在这种情况 ...

  9. uboot 2013.01 s3c6400编译失败

    通常我们对s3c6410平台开发u-boot是在s3c6400的基础上修改而成的,但是从uboot 2013.01这个版本之后的版本都把smdk6400对应的配置给删除了. 这是因为该版本smdk64 ...

  10. Python —— 批量替换指定目录下的所有文件中指定字符串

    参考:http://blog.csdn.net/zcwfengbingdongguke/article/details/13951527 代码: #!/usr/bin/python import os ...