我的简单spring安全应用程序有问题。在我登录之后,404错误页将打开,而不是我的视图(greet.jsp只包含一个标题)。
在我看来,我的控制器不处理请求,但我不知道为什么。我以前在没有Spring Security 的情况下做过这件事,而且成功了。但是当我增加了安全性,它就不起作用了。
添加了依赖项:springwebmvc、springsecurity-wev/config、javaxservlet-api。
我的spring配置:
@Configuration
@ComponentScan("security.config")
@EnableWebMvc
public class SpringConfig implements WebMvcConfigurer {
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}
我的安全配置:
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
User.UserBuilder userBuilder = User.withDefaultPasswordEncoder();
auth.inMemoryAuthentication()
.withUser(userBuilder.username("Matt").password("Matt").roles("Programmer"));
}
}
Dispatchers服务初始化器:
public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{SpringConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
安全初始值设定项:
public class SecurityInitializer
extends AbstractSecurityWebApplicationInitializer {
}
控制器:
@Controller
public class MyController {
@GetMapping("/")
public String getInfoForAllStaff(){
return "greet";
}
}
jsp地址:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Greet</title>
</head>
<body>
<h2>Hello!</h2>
</body>
</html>
在此之后,404错误页面
拜托,有人告诉我我做错了什么
1条答案
按热度按时间v8wbuo2f1#
因为我还不能添加评论,所以我不得不把它作为一个答案来写。我在处理Spring Security 时也遇到过类似的问题,这是因为
@ComponentScan
注解(这里详细解释),修复它解决了我的问题,也许它也会解决你的问题。