SpringBoot集成SpringSecurity遇到的坑

本文先上遇到的坑。后续会添加搭建!搭建很简单,去网上复制就行。

首先为什么要集成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();

猜你喜欢

转载自blog.csdn.net/qq_39276448/article/details/85924528