SpringBoot+Security+JWT进阶:三、自定义认证测试
前言
不知不觉已经距离上次开发已经有11个月了,这11个月也不是没有学习,只不过项目太忙,学习的主要路径都在项目上。
阅读下文要了解
- java(。。。)
- spring security一
- jwt 基础
- redis(不会也没关系,缓存用户用的)
不会搭建的可以查看基础
SpringBoot+Security+JWT基础
SpringBoot+Security+JWT进阶:一、自定义认证
SpringBoot+Security+JWT进阶:二、自定义认证实践
一、登录测试一
发起请求
可以使用postman
来测试
根据.loginProcessingUrl("/auth/login")
设置的登录接口。
用户名super.setUsernameParameter(GT_BOOT_FORM_USERNAME_KEY);
在这里设置过,
1 | http://127.0.0.1:8888/boot/auth/login |
请求经过的代码
1、自定义的UsernamePasswordAuthenticationFilter实现类
如果我们自定义了用户账号的验证,当前请求首先经过attemptAuthentication
方法获取用户信息。
2、自定义的AuthenticationProvider实现类
我们在这里实现了自定义认证服务,authenticate
方法做具体的认证操作。
一3、userDetailsService实现类获取登录用户
验证当前用户是否存在,如果不存在,则抛出throw new UsernameNotFoundException("用户不存在");
异常,直接到UsernamePasswordAuthenticationFilter.unsuccessfulAuthentication
处理当前异常,可以自定义返回信息。
验证通过后,会调用createSuccessAuthentication
创建 token
。
然后回到
4、自定义的UsernamePasswordAuthenticationFilter实现类
的successfulAuthentication
方法。
登录常用的路径就是这些。
二、携带 token 的请求测试
发起请求
请求经过的代码
BasicAuthenticationFilter.doFilterInternal过滤器
可以获取token中的用户信息
AuthenticationEntryPoint.commence验证失败
403禁止访问错误会进入当前端点。
验证成功后就直接访问到接口了。
到这里一个基本的验证就结束了,后续还可以给用户信息添加redis
或session
缓存,部署集群要做session
共享;分布式要做rpc
;访问不同数据库(一般作为服务来访问,不需要访问多数据库)。
推荐
SpringBoot+Security+JWT基础
SpringBoot+Security+JWT进阶:一、自定义认证
SpringBoot+Security+JWT进阶:二、自定义认证实践
gitee多数据源
IDEA好用的插件