Spring boot Security在Freemarker 使用assign security=JspTaglibs控制菜单按钮

版权声明:版权??? 版权.... 版权!!! 什么样的事要说三遍 https://blog.csdn.net/qq_16513911/article/details/86503794

添加pom.xml

		<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>

然后刷新一下maven,在jar包中找到资源,复制一份到static下面,路径自拟,一会程序定位就行了

然后写一个配置,继承WebMvcConfigurer接口,然后使用@PostConstruct初始化一下

(附个小知识点: 被@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。PreDestroy()方法在destroy()方法执行执行之后执行)

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
     @Autowired
    private FreeMarkerConfigurer configurer;

     @PostConstruct
    public void freeMarkerConfigurer() {
        List<String> tal = new ArrayList<>();
        tal.add("/static/tags/security.tld");
        TaglibFactory taglibFactory = configurer.getTaglibFactory();
        taglibFactory.setClasspathTlds(tal);
        if(taglibFactory.getObjectWrapper() == null) {
            taglibFactory.setObjectWrapper(configurer.getConfiguration().getObjectWrapper());
        }
    }
    //接口其他实现方法略,毕竟不能跑题
}

然后在页面中就可以使用了,在ftl页面顶部添加

<#assign security=JspTaglibs["http://www.springframework.org/security/tags"]/>

在页面中使用判断是该内容否出现

<@security.authorize access="hasRole('admin')">
   admin will see
</@security.authorize>
<@security.authorize access="hasRole('normal')">
   normal will see
</@security.authorize>

参考文章:

SpringBoot+SpringSecurity+Freemarker页面中使用security标签

猜你喜欢

转载自blog.csdn.net/qq_16513911/article/details/86503794