securityFilterChain(httpSecurity)
中配置拦截和放行的地址并添加授权管理器,并注入 AuthenticationManager(认证管理对象) 和 BCryptPasswordEncoder(随机盐值加密方法对象)authenticationManager.authenticate(带有账号密码的 usernamePasswordAuthenticationToken 对象)
得到认证后的对象 authenticationauthenticate()
会执行 UserDetailsService 实现类的 loadUserByUsername(username)
,在该方法中通过查询数据库来获取认证后的对象,此对象一般是我们实现 UserDetails 接口自定义的用户对象authentication.getPrincipal()
可以获得我们自定义的用户对象,强转preHandle(request,response,handler)
中判断是不是控制层方法,不是直接放行,handler instanceof HandlerMethod
afterCompletion(request,response,handler)
中 remove 掉addInterceptors(interceptorRegistry)
中添加 interceptorRegistry.addInterceptor(我们拦截的名字).excludePathPatterns(排除拦截路径的 String 数组).addPathPatterns("/**");
AntPathMatcher
对象的 match 方法进行比较return new AuthorizationDecision(false)
,有则为 true使用 Spring Security + OAuth2 + JWT 技术
OAuth2 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。应用场景:微信授权登录,外部系统访问本系统资源,前端访问后端。核心:
客户端
请求资源拥有者
得到其授权;客户端请求微信授权服务器
得到令牌;客户端携带令牌请求微信资源服务器
得到资源。授权模式:授权码模式:就是微信扫码授权登录,使用令牌的模式;密码模式
spring-cloud-starter-security
和 <