Spring security源码解析系列02---要不要配置@EnableWebSecurity

一、介绍

上一节Spring security源码解析系列01— 创建一个简单项目 已经启动了一个 简单的项目,主要就是在pom.xml 里面引入的 两个 依赖 ,启动的时候就 已经可以进行相关的验证了, 也没有进行配置 是否开启@EnableWebSecurity,就自动生效了

主要的核心配置 pom.xml 就是 如下:

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

那到底要不要 配置 开启 @EnableWebSecurity ?下面来 详细分析

二、原理解析

2.1 @EnableWebSecurity

我们打开 注解 EnableWebSecurity
在这里插入图片描述
这里主要是 通过 @Import 注册 WebSecurityConfiguration.class 类,和 OAuth2相关的 等其他的配置信息 来达到 启动之后 注册 验证的功能.
WebSecurityConfiguration.class 类 的 详细功能在后面章节详细分析.

2.2 spring-boot-starter-security

如果我们引入了 spring-boot-starter-security 这类 starter 包, 我们可以进一步点击进去看一下,里面 自动依赖了哪些 jar 包.
在这里插入图片描述
首先 引入了 security 的两个核心包 , spring-security-web,spring-security-config , 而这两个包 都是依赖 spring-security-core ,这三个jar 是 security 的 必须要的,也可以通过手动指定.
在这里插入图片描述
另外一个 就是 spring-boot-starter, 这个包 是需要 引入 spring-boot-autoconfigure 这个 包的,关键就在这里 ,autoconfigure 是通过SPI 自动加载注册一些需要的类 .
打开 对应的jar 包下面的 META-INF/spring.factories,
在这里插入图片描述
这里默认已经 自动注入了 Security 的 自动配置类 SecurityAutoConfiguration.class

三、小结(引入 security 两种方式)

3.1 引入 starter

引入 starter 这类jar, SpringBoot 会 自动 动过 autoconfigure 自动来加载注入 相关的security 配置信息

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>

这种方式 会自动加载对应的配置 ,可以不用 配置@EnableWebSecurity

3.2 直接引入 对应的包

其实对应的包就一共三个,可以自行配置, 比如spring mvc 项目 配置 之后 需要加入.

    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-config</artifactId>
      <version>5.3.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-web</artifactId>
      <version>5.3.5.RELEASE</version>
    </dependency>
        <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-core</artifactId>
      <version>5.3.5.RELEASE</version>
    </dependency>

这种方式就要配置开启 @EnableWebSecurity 不然不生效

四、配置全部放过

新建一个类, 继承WebSecurityConfigurerAdapter 类, 重写一下 ,对所有的url 都放过,如下:

@Component
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/").permitAll();
    }

}
支付宝微信
支付宝微信
如果有帮助记得打赏哦特别需要您的打赏哦
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直打铁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值