【发布时间】:2015-08-04 20:52:40
【问题描述】:
我已经配置了一个简单的安全单页 Web 应用程序,如下所示:
@Configuration
@EnableAutoConfiguration
@EnableWebMvcSecurity
public class MvcConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
//.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
.loginPage("/login") 被注释掉后,我得到一个默认登录页面,如下所示:
一切都按预期进行。
但是,如果我取消注释 .loginPage("/login") 使其指向我的自定义 login.html 页面,我会收到 404 错误。
这是我当前的文件结构:
main
L resources
L static
- index.html
- login.html
我知道我可以使用 XML 设置 viewResolver 并在阳光下配置每件小事,但我也知道 Spring Boot 有一些默认设置,如果我想让事情尽可能简洁,我可以利用这些设置.
我的问题是:Spring 在哪里寻找 login.html 文件?为了避免出现 404 错误,我必须放置 login.html 文件的绝对 URL 是什么?
另外,如果解决方案无论如何都必须涉及配置 spring,我宁愿避免使用 XML 并尽可能选择基于 Java 的配置。
【问题讨论】:
-
控制台有异常吗?你有
ViewResolver吗?我认为thymeleaf模板的默认位置是在resources -> templates下 -
嗨@ManuZi,控制台中没有错误,浏览器中仅显示春天的404消息。我没有 ViewResolver(我希望自动配置能解决这个问题)。我尝试使用模板文件夹而不是静态文件夹,但仍然得到相同的结果。
-
在你的例子和 spring io 例子之间我能做到的最后一个不同是你在方法中有一个斜线。尝试这样的事情:
.loginPage("/login")。你有这个页面的代码吗:spring.io/guides/gs/securing-web
标签: java spring spring-mvc spring-security spring-boot