我基本上已经复制了该教程,以将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
我不确定如何从这里继续。
答案 0 :(得分:1)
解决方案:不要将您的模板文件命名为与路由相同的名称。可以通过命名文件login_template.html
或其他方式来解决该问题。甚至更好,更改以下行:
registry.addViewController("/login").setViewName("login");
公正
registry.addViewController("/login");
我在ViewControllerRegistration.setViewName
的javadocs中找到了对此行为的提示。