security jwt
1,认证过滤器进行认证,继承UsernamePasswordAuthenticationFilter,其中的构造方法可以自定义登录接口路由,也可以在basicauthenticationfilter的方法doFilterInternal里面获取token,然后验证并设置认证信息到上下SecurityContextHolder.getContext().getAuthentication()中,
2,继承UsernamePasswordAuthenticationFilter,重写attemptAuthentication,将请求中的用户名,密码传给UsernamePasswordAuthenticationToken,然后用ProviderManager的常用实现接口AuthenticationManager中authenticate方法认证,传入构造后的UsernamePasswordAuthenticationToken,
3,实现UserDetailsService接口,从数据库查找用户,并返回UserDetails的实现类,该类用户的基本信息,权限,可以细化到角色或者是资源,角色权限由GrantedAuthority来接收
4,关于SecurityContextHolder
文档描述是这样的
5,继承DaoAuthenticationProvider,验证用户密码,构造方法中传入UserDetailsService,其中的重写方法additionalAuthenticationChecks可以抛出没有密码和密码不对的异常
6,
登录执行顺序:在springmvc进入controller之前,进入UsernamePasswordAuthenticationFilter调用AuthenticationManager的authenticate,返回对象UsernamePasswordAuthenticationToken,进入UserDetailsService调用loadUserByUsername,从数据库库查询登录用户的信息,然后进入DaoAuthenticationProvider进行密码验证
如果不是登录,向服务器器获取资源会进入BasicAuthenticationFilter,调用doFilterInternal判断是否有token,token是否有效,根据token查询用户的权限
security jwt流程
最新推荐文章于 2025-02-28 11:39:14 发布