25.ProfileService实现(调试)
上一节课拿到的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实现(调试)的更多相关文章
- 25、驱动调试之打印到proc虚拟文件
1.dmesg指令是通过读/proc/kmsg来获取打印信息,也可以通过cat /proc/kmsg打印: 说明:kmsg是环形缓存区,只能读一次 2.内核中fs/proc目录下有相关文件,比如pro ...
- iOS各种调试技巧豪华套餐
转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global Break ...
- xcode的调试技巧
转自:http://www.cnblogs.com/daiweilai/p/4421340.html#biyouji 目录 前言逼优鸡知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global ...
- 第25章 SEH结构化异常处理_未处理异常及向量化异常
25.1 UnhandledExceptionFilter函数详解 25.1.1 BaseProcessStart伪代码(Kernel32内部) void BaseProcessStart(PVOID ...
- Extjs4常见的调试问题
Extjs4常见的调试问题: 1.fireFn.apply of undefined方法名称对不上 2.新增页面居左解决:页面的宽度和高度需要调整,内容items有问题:或者:layout : 'co ...
- 使用Xcode进行调试
目录 知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints)打印的艺术 NSLog 开启僵尸对象(Enab ...
- IOS各种调试
IOS各种调试技巧豪华套餐 目录 前言逼优鸡知己知彼 百战不殆抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints)打印 ...
- ASP.NET Core分布式项目实战
ASP.NET Core开发者成长路线图 asp.net core 官方文档 https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/ ...
- 【笔记目录1】ASP.NET Core分布式项目实战
当前标签: ASP.NET Core分布式项目实战 共2页: 1 2 下一页 35.Docker安装Mysql挂载Host Volume GASA 2019-06-20 22:02 阅读:51 评论 ...
随机推荐
- ms人物上线
在看MS人物上线 else if(gs2ms_add_player == pkt.cmd) { PlayerChannel* pPC = new PlayerChannel(this); //加到地图 ...
- S2S4H整合注意问题
整合过程中出现问题记录: 1.The import javax.servlet.http.HttpServletRequest cannot be resolved 解决办法:在tomcat的lib目 ...
- Complete space 完备空间与柯西序列 巴拿赫空间与完备空间 完备空间与和希尔伯特空间 封闭closed与完备性complete
http://www.gatsby.ucl.ac.uk/~gretton/coursefiles/RKHS2013_slides1.pdf RKHS: a function space with a ...
- php总结8——mysql函数库、增删改
8.1 mysql函数库 php的函数 .php中用来操作mysql函数库的函数 常用函数 mysql_connect("主机名称/ip","用户名",&q ...
- linux c编程:进程间通信
进程间的通信包括管道,共享内存,信号量通信,消息队列,套借口(socket)和全双工管道通信 首先来看下管道的用法:管道顾名思义,就如同下水道管道一样,当从管道一端流水到另一端的时候,水流的方向是单方 ...
- PHP上传视频
https://github.com/chaping/plupload_docs 这下载 lupload有以下功能和特点: 1.拥有多种上传方式:HTML5.flash.silverlight以及传统 ...
- HTML5_CSS3可切换注册登录表单
在线演示 本地下载
- Download rtsp.c
1. [代码][C/C++]代码 /* * Copyright (c) 2011, Jim Hollinger * All rights reserved. * * Redistribution an ...
- 标准兼容HTML5输入框提示信息的插件iHolder_v0.1.06.21.2014_预览版
由于版面限制,简单说下,详细的内容及在线预览.预览版压缩包,见这里http://levi.cg.am/archives/3507 为什么说是标准兼容: 因为大多数placeholder插件是这样兼容的 ...
- codeforces 660B B. Seating On Bus(模拟)
题目链接: B. Seating On Bus time limit per test 1 second memory limit per test 256 megabytes input stand ...