在具有以下安全配置的示例 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 Security是Spring的一个不同模块。在我们使用Spring Core或Spring Web / Spring MVC或任何其他模块的地方,并不总是使用这个模块。这是一个独立的模块,我们可以随时添加和使用。
这就是 Spring 开发人员使Spring Security 模块独立的原因。
我们不应该用未使用的东西使我们的应用程序繁重。我们应该在应用程序需要时使用它。
慕容708150
TA贡献1831条经验 获得超4个赞
该框架本身就很大,它甚至有自己的框架,称为Spring-Boot。将功能部分分成称为Spring Projects 的东西是非常有意义的。和社区项目一样的官方有很多: 几个例子:
春季数据
春季安全
春批
请注意 Spring 网页注释:
Spring 是模块化的设计
学习所有 Spring 项目可能会变得繁琐和不堪重负。与您将应用程序划分为包、项目相同 - 相同的方法使用 Spring 独立于其他部分控制其所有部分。一些 Spring 项目仍然太大而无法划分为子项目 - Spring Security 就是一个很好的例子。
添加回答
举报
0/150
提交
取消