Spring Boot + Thymeleaf не разрешает login.html - PullRequest
0 голосов
/ 17 января 2019

Я в основном скопировал учебник для использования 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 голосов
/ 17 января 2019

Решение: не называйте ваши файлы шаблонов такими же, как ваши маршруты. Проблема может быть решена путем присвоения имени файлу login_template.html или как-то так. Или, что еще лучше, измените строку:

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

до

 registry.addViewController("/login");

Я нашел подсказку к этому поведению в javadocs для ViewControllerRegistration.setViewName.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...