6.理解Jwt代码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6.理解Jwt代码相关的知识,希望对你有一定的参考价值。
源码请看链接:https://gitee.com/kuzongfan/sso.git
1.昨天主要是对Jwt的代码里面不熟悉的代码进行了简要的理解,发现其实有些流程并不是普通程序员自己写的,而是自己进行拓展,这些流程是开源程序员写的开发流程;我发现这些代码一般要么是父类的方法实现,要么就是爷爷类的方法代码实现或者是更高辈分的;所以在敲代码觉得这个函数自己不熟悉的话可以自己跳转到相应类来进行比较熟悉;
2.理解自己没有用过的代码
- 序列化:数据是以二进制在网络中传输,所以我们需要将对象转化为字节类型来传送数据;反序列化是将字节解析为对象
- ObjectMapper:Json与对象之间转换的一个工具类
- JwtUtil:主要用于生成和校验token;主要有:生成JIT、私钥加密token、公钥解析token、通过token获取用户信息,载荷信息
- RsaUtil工具类:根据密文生成公钥和私钥,再从文件中获取公钥和私钥
- JsonIgnore注解:序列化时忽略掉一些实体类中的属性
- SysRole权限类需要继承GrantedAuthority接口类,并实现getAuthority(),返回权限类的名称就是对应用户权限
- SysUser用户类实现UserDetails接口类,并实现getAuthority(),isAccountNonExpirated()、isAccountNonLocked()、isCreadentialExpirated()、isEnable()等方法
- 在SysUserMapper类中通过@Results格式省去mybatis文件,进行数据的查询以及字段与属性的对应;通过many=@Many(select = "多的包类方法名")来实现一对多的映射
- SysUserDetailsService继承UserDetailsService类,它的实现类需要继承loadUserByUsername()
- RequestUtil和ResponseUtil类,RequestUtil工具类主要是通过JsonUtil来读取请求中的输入类来转换输入流为指定类型对象;ResponseUtil工具类主要通过设置响应信息,以及使用JsonUtil类将响应的状态,信息以Result实体类以字符串方式写
- 认证过滤器JwtAuthenticationFilter继承UsernamePasswordAuthenticationFilter,但是它是继承AbstractAuthenticationProcessingFilter的用户认证方法attemptAuthentication()、登陆成功后方法successfulAuthentication()、以及登录失败方法unSuccessfulAuthentication()
- 认证配置类和验证配置类;daoAuthenticationProvider主要用来解析并认证UsernamePasswordAuthenticationToken的;自定义认证配置类和验证配类
- 资源类汇总的验证过滤器继承BasicAuthenticationFilter,实现了它的doFilterInternal(),主要根据header判断是否token是否合法,根据用户信息判断用户验证是否成功
- @Secured("ROLE_ADMIN","ROLE_PRUDUCT"),使用上面必须在启动类上面添加EnableGlobalMethodSecurity(securedEnable=true)才能使用;作用是上述权限才能访问它的跳转页面
3.反思:其实自己可以通过找某方法的父类来了解该方法的使用,再不明白再去搜索,不然光驱查询自己也可能无法接受,再就是很多东西其实都是基础,自己要结合以前的基础去分析现在别个写的流程
4.复盘:明天把整个代码重新复盘一遍,巩固所学
以上是关于6.理解Jwt代码的主要内容,如果未能解决你的问题,请参考以下文章
firebase 如何发送有效载荷包含下划线字符的 JWT 令牌?