Spring Boot + Thymeleaf无法解析login.html

时间:2019-01-17 10:06:38

标签: spring spring-boot spring-security thymeleaf

我基本上已经复制了该教程,以将Spring Web Security与Spring Boot和Thymeleaf一起使用。 https://spring.io/guides/gs/securing-web/

用于配置:

@Configuration
public class WebConfig implements WebMvcConfigurer {

public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/login").setViewName("login");
    registry.addViewController("/").setViewName("home");
}}

为了确保public class WebSec extends WebSecurityConfigurerAdapter中的安全性:

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/", "/home").permitAll()
        .antMatchers("/users*").hasRole("ADMIN")
        .antMatchers("/users/*").hasRole("ADMIN")
        .anyRequest().authenticated()
        .and()
        .formLogin().loginPage("/login").permitAll()
        .and()
        .logout().permitAll();
}

所有html文件都在

/src/main/resources/templates

现在,很好地找到了home.html。但是,无论何时需要登录页面,都不会在同一文件夹中找到login.html,并且错误是:

Error resolving template "login", template might not exist or might not be accessible by any of the configured Template Resolvers

我不确定如何从这里继续。

1 个答案:

答案 0 :(得分:1)

解决方案:不要将您的模板文件命名为与路由相同的名称。可以通过命名文件login_template.html或其他方式来解决该问题。甚至更好,更改以下行:

 registry.addViewController("/login").setViewName("login");

公正

 registry.addViewController("/login");

我在ViewControllerRegistration.setViewName的javadocs中找到了对此行为的提示。