关于java:spring-security放行所有请求通过配置多个WebSecurityConfigurerAdapter实现

26次阅读

共计 861 个字符,预计需要花费 3 分钟才能阅读完成。

我的项目场景:

笔者最近有一个我的项目,依赖关系如下图:

  • main-project 是主我的项目
  • auth-project 是公司封装好的认证核心我的项目,打包成了 jar 包供援用,基于 spring security 开发

需要形容

当初笔者须要在 main-project 上做开发,即在 Controller 中增加一个新接口,然而因为援用了 auth-project,所以所有接口必须要先登录获取 token 之后能力拜访。
为了便于开发,笔者想临时跳过 spring security 的认证过程。

解决方案:

办法一:

在 main-project 的 config 包下编写一个类,继承 WebSecurityConfigurerAdapter,并重写 configure(HttpSecurity http) 办法,放行所有申请,代码如下:

@EnableWebSecurity
@Order(1)
public class MyWebSecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {http.authorizeHttpRequests()
                .anyRequest().permitAll()
                .and()
                .csrf().disable();
    }

这里有 2 点须要留神:

  • @Order(1) 是为了配置执行程序的优先级,因为 auth-project 里曾经有了一个 WebSecurity 的配置类,所以这里配置 @Order(1) 是为了让咱们写的配置类先加载,数字越小优先级越高;
  • 须要禁用 csrf 进攻,否则除 get 申请办法以外,其它类型的申请会返回 403 响应。

办法二:

在 main-project 的 pom.xml 文件中,正文掉 auth-project 的 dependency。

参考文章:

浅谈 Spring @Order 注解的应用
Spring Boot 申请 403 Forbidden 谬误

本文如有侵权,请分割我删除,谢谢!

正文完
 0