为了账号安全,请及时绑定邮箱和手机立即绑定

为什么需要显式导入 spring-security-web 依赖项?

为什么需要显式导入 spring-security-web 依赖项?

largeQ 2021-09-12 20:02:51
在具有以下安全配置的示例 Spring 项目中:import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter {    @Autowired    MySimpleEncoder passwordEncoder;    @Override    protected void configure(AuthenticationManagerBuilder auth) throws Exception {        auth.inMemoryAuthentication()                .passwordEncoder(passwordEncoder)                .withUser("admin").password(passwordEncoder.encode("admino")).roles("USER","ADMIN")                .and()                .withUser("user").password(passwordEncoder.encode("123456")).roles("USER");    }    @Bean    public MySimpleEncoder passwordEncoder() {        return new MySimpleEncoder();    }    @Override    protected void configure(HttpSecurity http) throws Exception {        http.authorizeRequests()                .antMatchers("/**").hasAnyRole("ADMIN", "USER")                .and().httpBasic()                .and().csrf().disable();    }}我注意到您需要这两个依赖项: <dependency>        <groupId>org.springframework.security</groupId>        <artifactId>spring-security-core</artifactId>    </dependency>    <dependency>        <groupId>org.springframework.security</groupId>        <artifactId>spring-security-config</artifactId>    </dependency>还有这个,这是运行时需要的:<dependency>    <groupId>org.springframework.security</groupId>    <artifactId>spring-security-web</artifactId>    <scope>runtime</scope></dependency>为什么最后一个依赖项没有被其他两个依赖项之一自动拉入运行时范围?为什么我们需要显式声明它?我正在使用 Spring 5
查看完整描述

2 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

Spring SecuritySpring的一个不同模块。在我们使用Spring CoreSpring Web / Spring MVC或任何其他模块的地方,并不总是使用这个模块。这是一个独立的模块,我们可以随时添加和使用。

这就是 Spring 开发人员使Spring Security 模块独立的原因。

我们不应该用未使用的东西使我们的应用程序繁重。我们应该在应用程序需要时使用它。


查看完整回答
反对 回复 2021-09-12
?
慕容708150

TA贡献1831条经验 获得超4个赞

该框架本身就很大,它甚至有自己的框架,称为Spring-Boot。将功能部分分成称为Spring Projects 的东西是非常有意义的。和社区项目一样的官方有很多: 几个例子:

  • 春季数据

  • 春季安全

  • 春批

请注意 Spring 网页注释:

Spring 是模块化的设计

学习所有 Spring 项目可能会变得繁琐和不堪重负。与您将应用程序划分为包、项目相同 - 相同的方法使用 Spring 独立于其他部分控制其所有部分。一些 Spring 项目仍然太大而无法划分为子项目 - Spring Security 就是一个很好的例子。


查看完整回答
反对 回复 2021-09-12
  • 2 回答
  • 0 关注
  • 251 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信