【发布时间】:2016-08-23 07:34:41
【问题描述】:
我一直在使用 Spring MVC 应用程序。打算增加安全性。一切正常。
添加了下一个实现。
- MessageSecurityWebApplicationInitializer
- MessageWebApplicationInitializer
- 安全配置
登录表单有效。
授权成功后,得到 - HTTP Status 404 -
我也可以在授权后将方法调试到appController中,我的意思是下一个方法public String listPatients(ModelMap model)。
为什么我有 404 ?我应该解决什么问题?
public class MessageSecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
}
public class MessageWebApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{AppConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[]{AppConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/*"};
}
}
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("user").roles("USER");
}
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.and()
.httpBasic();
}
}
@Controller
@RequestMapping("/")
public class AppController {
public static final String jsonPage = "json";
@RequestMapping(value = {"/"}, method = RequestMethod.GET)
public String listPatients(ModelMap model) {
model.addAttribute("json", "test"}");
return jsonPage;
}
BR!
【问题讨论】:
-
我建议使用 Spring security + Spring MVC 打开日志记录,看看它在做什么。
-
对于初学者,请停止两次加载您的应用程序。您的
AppConfig正在为root 和servlet 上下文加载AppConfig,有效地复制了您的整个应用程序。在根(服务、存储库、基础设施)和 servlet 上下文(与网络相关的东西,如控制器等)中拆分您的配置。 -
我同意@M.Deinum。如果您在启动时检查日志,您可以看到您正在创建两个上下文。不要这样做并拆分您的配置(请查看下面的答案)
-
可能是打错了,但这里不应该把这个符号“}”删掉吗?“model.addAttribute("json", "test"}");" ?
标签: java spring spring-mvc spring-security