4.通用模块以及认证模块
1.主要是编写了公共模块以及认证服务模块的代码;首先公共模块中,jsonUtil解析数据并返回对象以及序列化一个对象返回json字符串;Jwt主要用来生成和校验加密以及解密token,rsa用来获取公钥和密钥;然后熟悉了以前做过的权限,请求和响应工具类由JSONUtil类来实现,用于返回对象和响应浏览器;配置类主要根据公钥和私钥路径获取公钥和私钥;最后的配置类主要用于设置授权的加密方式以及具体实现类设置
2..sso-common模块
- 首先是载荷和结果实体类
- 载荷类:id、userInfo、expiration
- 结果类、status、msg、data
- 再就是JsonUtil、JwtUtil以及RsaUtil等工具类
- JsonUtil工具类主要是将对象序列化为JSON字符串,将j输入流解析为指定类型对象,还有将json字符串解析为指定类型对象、集合、键值对集合以及复杂类型对象
- JwtUtil类主要是用来生成和校验token;首先是生成一个base64加密的Jwt的id,然后有分钟和秒钟私钥加密token,再就是公钥解析token;还有通过token获取用户信息以及载荷信息
- RsaUtil类主要是用来获取公钥和私钥并根据密文生成公钥和私钥,写入文件;首先是根据路径返回文件字节数组,然后根据字节数组获取公钥,私钥同公钥一样;根据密文,公钥和私钥文件路径写出公钥和私钥;认证服务主要是生成token,以及响应token状态给浏览器
3.sso-auth-server模块
- domain包:SysUser和SysRole类
- SysUser实现UserDetails接口,包含id、用户名、密码、状态、权限等属性;继承获取用户所有权限,账号是否过期,被锁,被禁用以及凭证(密码)是否过期等方法
- SysRole实现GrantedAuthority接口,包含id、name以及desc等属性;继承获取权限方法
- Utils包:RequestUtil和ResponseUtil工具类
- RequestUtil工具类主要通过JsonUtil读取请求中的输入流,返回一个指定类型对象
- ResponseUtil工具类主要通过设置响应参数的属性值,再通过JsonUtil类相应消息和状态给浏览器
- prop包:RsaKeyProperties配置类:如果公钥和私钥路径存在,生成公钥和私钥;需要在启动类中自动配置该属性
- mapper包:SysUserMapper和SYSRoleMapper接口类;通过用户名查找用户信息;以及通过uid产看查询权限
- service包:SysUserService接口继承UserDetailsService接口;SysUserServiceImpl实现SysUserService接口;实现了通过用户名加载用户信息方法
- filter包:JwtAuthenticationFilter类;主要实现了attemptAuthentication方法,通过request请求获取用户信息,如果用户名和密码不为空,就存入UsernamePasswordAuthenticationToken中,再存入authenticationManager中返回;successfulAuthentication方法:通过用户以及权限实体类借助JWTUtil工具类生成token,再通过ResponseUtil工具类响应给浏览器;UNSuccessfulAuthentication方法:首先清理上下文,再根据failed属于哪个异常类,通过热response响应给浏览器
- config包:AuthenticationProvider方法:设置授权的实体类接口、加密方式;config方法:设置了一些机制的禁用以及增加了认证过滤器
4.反思:还是没有将整体的知识连通起来,现在编写了这些类,有些知识用到这里的作用还没有想清楚,没有理解起来;这更是在项目中要学到的东西,多动手领悟为什么这么写,这是不是中规范,以后自己写相关代码是不是可以借鉴
5.复盘:一周复盘一次;看看自己的实现流程,自己的反思和总结心得