SpringBoot+SpringSecurity+Freemarker项目中在页面上使用security标签控制按钮显示隐藏达到对按钮级权限控制还是比较方便的,如下配置即可。
1、引入依赖
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-taglibs</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2.1-b03</version>
</dependency>
2、依赖引入后到spring-security-taglibs包中META-INF下security.tld复制出来,放到/resources/static下,最后建一个目录tags,如下:
(注:请忽视c.tld)
3、建一个配置类
@Configuration
public class TldConfig extends WebMvcConfigurerAdapter {
@Autowired
private FreeMarkerConfigurer configurer;
@PostConstruct
public void freeMarkerConfigurer() {
List<String> tlds = new ArrayList<String>();
tlds.add("/static/tags/security.tld");
TaglibFactory taglibFactory = configurer.getTaglibFactory();
taglibFactory.setClasspathTlds(tlds);
if(taglibFactory.getObjectWrapper() == null) {
taglibFactory.setObjectWrapper(configurer.getConfiguration().getObjectWrapper());
}
}
}
4、在freemarker页面顶部引入标签
<#assign security=JspTaglibs["http://www.springframework.org/security/tags"] />
5、使用标签如下:
<@security.authorize access="hasRole('ADMIN')">
222
</@security.authorize>