没有 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 安全性的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot Thymeleaf 配置

spring boot中使用thymeleaf

Spring boot:thymeleaf 没有正确渲染片段

spring Thymeleaf 中文乱码

Thymeleaf模板引擎

没有 Thymeleaf 的 Spring Boot 安全性