thymeleaf + springboot + springsecurity项目配置

时间:2017-03-23 21:54:11

标签: java spring-mvc spring-boot spring-security thymeleaf

  • spring security 4.2.2
  • thymeleaf 3.0.3

我有一个spring boot项目,后来开始使用spring security来保护一些API端点,使用spring安全实现的默认登录页面进行身份验证很顺利,但是现在我必须实现一个自定义登录页面。

我正在尝试按照本教程:http://docs.spring.io/spring-security/site/docs/4.2.2.RELEASE/guides/html5/form-javaconfig.html

但我发现自己无法正确显示自定义表单。

我很确定这是因为我没有定义任何模板解析器,但公平地说,即使我已阅读的所有示例,我仍然无法弄清楚如何。 所以我在这里使用:

SecurityConfig

中的

@Override
protected void configure(final HttpSecurity http) throws Exception {
    http
    .csrf().disable()
    .authorizeRequests()
            .antMatchers("/resources/**").permitAll()
    .antMatchers("/api/survey/report/**").hasRole(ADMIN_ROLE)
    .and().formLogin().loginPage("/login")
    .and().logout();
  }
}

自定义和新创建的登录控制器

@Controller
public class LoginController {

@RequestMapping("/login")
public String login(){return "login";}
}

login.htm 作为指南:

<html xmlns:th="http://www.thymeleaf.org">
<head th:include="layout :: head(title=~{::title},links=~{})">
<title>Please Login</title>
</head>
<body th:include="layout :: body" th:with="content=~{::content}">
<div th:fragment="content">
<form name="f" th:action="@{/login}" method="post">
    <fieldset>
        <legend>Please Login</legend>
        <div th:if="${param.error}" class="alert alert-error">
            Invalid username and password.
        </div>
        <div th:if="${param.logout}" class="alert alert-success">
            You have been logged out.
        </div>
        <label for="username">Username</label>
        <input type="text" id="username" name="username"/>
        <label for="password">Password</label>
        <input type="password" id="password" name="password"/>
        <div class="form-actions">
            <button type="submit" class="btn">Log in</button>
        </div>
    </fieldset>
</form>
</div>
</body>
</html>

现在的情况我认为我应该实施一个新的课程,以确认我的百里香(在这里制作),但我已经有一个课程来配置我的应用程序: MvcConfiguration

@Configuration
public class MvcConfiguration implements ServletContextInitializer,
EmbeddedServletContainerCustomizer {

我虽然我可以在那里添加模板解析器,但无济于事。因为我的模板无法识别 template not accesible

注意:不将模板解析器添加到 MvcConfiguration 与添加模板解析器的结果相同:模板不可访问

我知道该指南是基于一个spring mvc应用程序而我正在我自己的项目中实现它,但如果有人能指出我正确的方向我将非常感激

编辑:

这是我得到最多的错误:java log

1 个答案:

答案 0 :(得分:0)

  1. 确保您的文件显示在资源/模板
  2. 让你的pom.xml中添加了thymeleaf依赖(默认百里香叶解析器解析视图)