使用 Spring 安全性在 Thymeleaf 中的静态资源的可见性
Posted
技术标签:
【中文标题】使用 Spring 安全性在 Thymeleaf 中的静态资源的可见性【英文标题】:Visability of static resourses in Thymeleaf with using Spring security 【发布时间】:2021-01-27 12:42:10 【问题描述】:我有一个这样的目录层次结构:
-resources
|
|-static
| |-css
| |-js
|-templates
|-error
|-fragments
还有这个角色:
@Override
protected void configure(HttpSecurity httpSecurity) throws Exception
httpSecurity
.csrf()
.disable()
.authorizeRequests()
.antMatchers("/login").not().fullyAuthenticated()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/main").hasRole("USER")
.antMatchers("/resources/**", "/registration").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/main")
.permitAll()
.and()
.logout()
.permitAll()
.logoutSuccessUrl("/login");
我需要一些帮助:1) 我的静态资源在授权之前是不可见的 2) 授权后重定向到css或js文件
请帮助我。我做错了什么?
【问题讨论】:
【参考方案1】:您应该在资源文件夹中创建公用文件夹,Spring 将向所有人提供放置在 /css/**
、/js/**
、/images/**
文件夹中的文件,无需授权。
如果您将 img.jpg 放在像 src/main/resources/public/images/img.jpg
这样的图像文件夹中,则可以通过 http://localhost:8080/images/img.jpg 访问它
【讨论】:
【参考方案2】:试试这个:
private static final String[] PUBLIC_MATCHERS =
"/css/**",
"/js/**",
"/images/**",
;
//...
http
.authorizeRequests().
antMatchers(PUBLIC_MATCHERS).
permitAll().anyRequest().authenticated();
//...
【讨论】:
不客气。 :) 几个月前我还是 Spring Boot 和 Thymeleaf 的初学者,我很高兴能帮助别人。以上是关于使用 Spring 安全性在 Thymeleaf 中的静态资源的可见性的主要内容,如果未能解决你的问题,请参考以下文章
没有 Thymeleaf 的 Spring Boot 安全性
Thymeleaf 和 Spring 引导以及 Spring 安全性不起作用