目前Freemarker对Shrio的标签还不支持,不过已经有人贡献出来第三方面解决方案,如下:

1、下载shiro-freemarker-tags

GitHub地址:https://github.com/jagregory/shiro-freemarker-tags
可以先看一下他的说明文档,有一个初步的了解。

2、Spring MVC配置

自定义一个ShiroTagFreeMarkerConfigurer继承Spring本身提供的FreeMarkerConfigurer,目的是在FreeMarker的Configuration中添加shiro的配置

class ShiroTagFreeMarkerConfigurer extends FreeMarkerConfigurer {
1
2
3
4
5
6
7
8
@Override
public void afterPropertiesSet() throws IOException, TemplateException {
super.afterPropertiesSet();
this.getConfiguration().setSharedVariable("shiro", new ShiroTags());
}
}

Spring mvc配置

id="freemakerCongfig"
1
2
3
4
5
6
7
8
9
class="com.xxx.web.freemarker.ShiroTagFreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/views/" />
<property name="freemarkerSettings">
<props>
<prop key="defaultEncoding">UTF-8</prop>
<prop key="classic_compatible">true</prop>
</props>
</property>
</bean>

3、使用Shiro Tag

<@shiro.guest>Hello guest!</@shiro.guest>