Spring MVC 프로젝트가 있고 보안을 추가하려고합니다. 내 문제는 봄이 페이지에 대한 액세스를 거부하지 않는다는 것입니다. / product 페이지로 가면 열릴 것입니다. 다음 보안 구성이 있습니다.
@Configuration
@EnableWebSecurity
public class SecureConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobalSecurity(AuthenticationManagerBuilder auth)
throws Exception {
auth.inMemoryAuthentication().withUser("a").password("1")
.roles("USER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated();
http.csrf().disable();
}
}
처음에는 이러한 메서드가 스프링 컨텍스트에 의해 실행되지 않는다고 생각했지만 실행되는 것을 발견했습니다. 올바르게 이해하면이 구성은 모든 페이지에 대한 액세스를 거부해야하지만 그 반대의 경우 모든 페이지 (/, / product, / test 페이지)로 이동할 수 있습니다.
내 보안 종속성 :
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>5.4.0</version>
</dependency>
애플리케이션 클래스 :
public class Application implements WebApplicationInitializer {
Logger logger = LoggerFactory.getLogger(Application.class);
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(WebConf.class, SecureConfig.class);
ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", new DispatcherServlet(context));
dispatcher.addMapping("/*");
dispatcher.setLoadOnStartup(1);
}
}
다음 클래스를 추가하여이 문제를 해결했습니다.
public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer {
}
SpringSecurityFilterChain은이 클래스 없이는 작동하지 않았기 때문에 보안이 작동하지 않았습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다