安全认证体系总结
目前安全认证方式有三种:
- 1.通过用户名密码登录,服务端完成认证
- 2.用过手机号和验证码登录,服务端完成认证
- 3.通过第三方的Oauth2.o协议完成认证,后续还需要继续补充手机信息和用户信息,这种方式只是临时的。
认证逻辑都一样:- 通过认证后服务端生成和记录token,然后发送到客户端,以后客户端每次请求都需要携带token进行请求,服务器每次校验token完成授权
基于Spring Security对上述技术的实现
自定义PasswordEncoder完成密码加密
自定义userDetailService完成获得用户名后的认证处理。
- 根据用户查询对应的密码,并返回查询结果,如果不存在就抛出异常,后面的结果交给认证类处理
- 根据用户名查询对应的权限
重写UsernamePasswordAuthenticationFilter类,完成自定义认证
- 重写类中的attemptAuthentication授权方法
- 重写successfulAuthenticaiton授权成功方法
- 发送token
- 把用户的权限放到redis里,等待后续调用
- 重写unsuccessfulAuthenticaiton授权成功方法
重写BasicAuthenticationFilterL类,完成自定义的授权
- 重写doFilterInternal方法
- 获取token,拿到用户名,查询权限
- 重写doFilterInternal方法
编写配置文件,把自定义的内容注册到配置文件里
总结
- 针对登录页面设置一条过滤链,进行登录认证获得token
- 针对其他api设置一条过滤链,专门认证api是否携带token