thymeleaf + springboot + springsecurity 项目配置
Posted
技术标签:
【中文标题】thymeleaf + springboot + springsecurity 项目配置【英文标题】:thymeleaf + springboot + springsecurity project configuration 【发布时间】:2017-08-16 16:42:19 【问题描述】: spring security 4.2.2 百里香叶 3.0.3我有一个 spring boot 项目,后来开始使用 spring security 来保护一些 API 端点,使用 spring security 实现的 default 登录页面进行身份验证,但现在我必须实现一个自定义登录页面。
我正在尝试学习本教程: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
虽然我可以在那里添加模板解析器,但无济于事。因为我的模板无法识别
注意:不将模板解析器添加到 MvcConfiguration 与添加它的结果相同:模板不可访问
我知道该指南基于 spring mvc 应用程序,我正在我自己的项目中实现它,但如果有人能指出我正确的方向,我将非常感激
编辑:
这是我得到最多的错误:java log
【问题讨论】:
异常是在 ServletContext 中找不到“views/login.html”。在您的问题中,您说您的模板名为“login.htm”。这只是一个错字,你真的把它命名为“login.html”吗? “login.html”在您的项目中存在于哪里?是在 WEB-INF/views 文件夹下,还是其他地方? 我在资源/视图中将其命名为 login.html 【参考方案1】:-
确保您的文件存在于资源/模板下
让您在 pom.xml 中添加百里香叶依赖项(默认情况下百里香叶解析器解析视图)
【讨论】:
以上是关于thymeleaf + springboot + springsecurity 项目配置的主要内容,如果未能解决你的问题,请参考以下文章