本文先上遇到的坑。后续会添加搭建!搭建很简单,去网上复制就行。
首先为什么要集成SpringSecurity?我的项目是Http会话即单次握手。每次访问接口需要验证用户令牌(token,请求头获取)
首先博主集成SpringSecurity之后跨域失败!(这里指的是没有配置nginx情况下)
因为CORS请求是两次,一次是确定信息,一次是传递。那么第一次一定是没有token的!那么就要放行,所以Security就要关闭防护!
.and() //一个拦截组的结尾
.csrf().disable(); // 关闭csrf防护
因为楼主设置的Security的过滤链条是顶级链。还没有通过我们配置的跨域拦截器(即使你设置的过滤链等级为0)就已经返回前端。那么是不是就没有跨域了?是的!
那么根据这样的思路,是不是可以在SpringSecurity设置跨域?是的!
就在链条种and一个规则:
http.cors().and().csrf().disable().authorizeRequests() //处理跨域请求中的Preflight请求(cors) .requestMatchers(CorsUtils::isPreFlightRequest).permitAll() .antMatchers("/auth/login").permitAll() .anyRequest().authenticated();