没有 Thymeleaf 的 Spring Boot 安全性
Posted
技术标签:
【中文标题】没有 Thymeleaf 的 Spring Boot 安全性【英文标题】:Spring Boot Security without Thymeleaf 【发布时间】:2018-02-15 14:45:00 【问题描述】:我想使用 Spring Security 保护 Spring Boot 中“/static/secure”中的所有页面,但我不希望使用视图。
我创建了一个登录表单,方法为“POST”,并设置了基于 Java 的配置类以在成功时转到 /static/secure/main.html。
我希望我可以从特定问题的角度进行处理,不幸的是,我能找到的所有关于如何进行身份验证的指导都使用 Thymeleaf 或视图。我真的只是希望它在成功登录后导航到 /static/secure/main.html,而不是调用视图。有谁知道如何将 Spring Boot 配置为仅在身份验证时转到常规 HTML 页面?
我正在尝试仅使用 Spring Security 来处理登录,然后应用程序的其余部分将是 Angular 一旦我们进入,根据需要访问 REST API 端点 - 所以我真的不想要“视图”概念,也没有百里香叶。
任何帮助将不胜感激!
谢谢, 丹
【问题讨论】:
请添加java
标签。
【参考方案1】:
成功的身份验证会重定向到用户最初尝试打开的页面。因此,只要您保护了 /static/secure
文件夹,访问 /static/secure/main.html
就会触发身份验证,然后在成功时自动重定向到该页面。
您的整体配置将如下所示:
@Configuration
@EnableWebMvc
public class SpringMvcConfiguration implements WebMvcConfigurer
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry)
registry.addResourceHandler("/static/**")
.addResourceLocations("/static/");
(假设您从 /static/...
URL 提供 Angular 页面,并且页面本身来自 Maven 项目中的 /src/webapp/static
文件夹。)
在您的 Spring Security 配置中:
@Override
protected void configure(HttpSecurity http) throws Exception
http.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/static/secure/**").authenticated()
.and()
// ...
【讨论】:
以上是关于没有 Thymeleaf 的 Spring Boot 安全性的主要内容,如果未能解决你的问题,请参考以下文章