Java 在不同包中扩展WebSecurity ConfigureAdapter类时,自定义安全性不起作用
除了包含Java 在不同包中扩展WebSecurity ConfigureAdapter类时,自定义安全性不起作用,java,spring-boot,Java,Spring Boot,除了包含@SpringBootApplication类的包之外,我在另一个包中扩展了websecurityConfigureAdapter。然后它就无法生成默认用户名和密码 当它在同一个包中时,它工作得很好 package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @
@SpringBootApplication
类的包之外,我在另一个包中扩展了websecurityConfigureAdapter
。然后它就无法生成默认用户名和密码
当它在同一个包中时,它工作得很好
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
类扩展WebSecurityConfigureAdapter
package com.securitymodule;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
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;
@Configuration
@EnableWebSecurity
public class WebSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
// TODO Auto-generated method stub
super.configure(http);
http.antMatcher("/**").authorizeRequests().anyRequest().hasRole("USER").and().formLogin();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// TODO Auto-generated method stub
super.configure(auth);
auth.
inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
@springbootplication
是@Configuration
,@EnableAutoConfiguration
,@ComponentScan
的缩写。这使得Spring可以对当前包和下面的包进行组件扫描。因此,com.example
和com.example
下的所有类都会被扫描以创建bean,而com.example
上的任何类都不会像com.securitymodule
因此,要么将
@ComponentScan(basePackages={“com.securitymodule”})
添加到主类中,要么将websecurityconfigureadapter
的包作为com.example.securitymodule的文档。运行应用程序时,它将扫描类本身的所有包和子包。因此,它将扫描com.example
及其下面的所有内容com.securitymodule
不在com.example
下面,因此不会被扫描。谢谢@M.Deinum。你的评论对我帮助很大。这对我有用。