freemarker中使用shiro标签

来源:互联网 发布:淘宝卖家信誉等级查询 编辑:程序博客网 时间:2024/05/19 18:40

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

1、下载shiro-freemarker-tags

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

2、Spring MVC配置

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

?
public class ShiroTagFreeMarkerConfigurer extends FreeMarkerConfigurer {
  
    @Override
    public void afterPropertiesSet() throws IOException, TemplateException {
        super.afterPropertiesSet();
        this.getConfiguration().setSharedVariable("shiro"new ShiroTags());
    }
      
}

下面的Spring mvc配置

?
<bean id="freemakerCongfig"
    class="com.xxx.web.freemarker.ShiroTagFreeMarkerConfigurer"><!--这里是你自己定义的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

?
下面具体讲讲标签应用,先列出原先的方式,再列出freemarker的方式,网上例举 比较少 
guest标签 
验证当前用户是否为“访客”,即未认证(包含未记住)的用户 
    <shiro:guest>  
    </shiro:guest>  

freemark中: <@shiro.guest> 
    </@shiro.guest> 

user标签 
认证通过或已记住的用户 
<shiro:user>  
</shiro:user> 

freemark中: 
<@shiro.user>  
    </@shiro.user> 
authenticated标签 
已认证通过的用户。不包含已记住的用户,这是与user标签的区别所在。 
    <shiro:authenticated>  
    </shiro:authenticated>  
freemark中: 
Java代码  收藏代码
  1. <@shiro.authenticated>    
  2.    </@shiro.authenticated>   



principal 标签 
输出当前用户信息,通常为登录帐号信息 
    Hello,  <shiro:principal property="name"/> 
freemarker中: 
  Hello,  <@shiro.principal property="name" />, how are you today?  


hasRole标签 
验证当前用户是否属于该角色 
    <shiro:hasRole name="administrator">  
        Administer the system  
    </shiro:hasRole>  

freemarker中: 
<@shiro.hasRole name=”admin”>Hello admin!</@shiro.hasRole> 
好了 其他没说的 依次类推 

还有一个问题 就是 如果默认用shiro登录后是remember me true的 
那么用户登录后 如果此时重启tomcat  那么 
<@shiro.principal property="name" />还是有值的 

这时候退出按钮的控制应该用:<@shiro.user>  
      退出 
    </@shiro.user> 
转载自:http://skyfar666.iteye.com/blog/2001891
0 0
原创粉丝点击