freemarker中使用shiro标签

/**
 * 自定义一个ShiroTagFreeMarkerConfigurer继承Spring本身提供的FreeMarkerConfigurer,目的是在FreeMarker的Configuration中添加shiro的配置
 * @author q
 *
 */
public class ShiroTagFreeMarkerConfigurer extends FreeMarkerConfigurer{
	@Override
    public void afterPropertiesSet() throws IOException, TemplateException {
        super.afterPropertiesSet();
        this.getConfiguration().setSharedVariable("shiro", new ShiroTags());
    }
修改freemarker在spring配置文件中的配置 
<!-- 配置freeMarker的模板路径 -->  
    <!-- <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">   -->
    <bean id="freemarkerConfig" class="com.ws.config.web.freemarker.ShiroTagFreeMarkerConfigurer">  
<!-- 用自定义的类 替代原生类-->
        <property name="templateLoaderPath">  
            <value>/WEB-INF/ftl/</value>  
        </property>  
        <property name="freemarkerVariables">  
            <map>  
                <entry key="xml_escape" value-ref="fmXmlEscape" />  
            </map>  
        </property>  
        <property name="defaultEncoding">  
            <value>utf-8</value>  
        </property>  
        <property name="freemarkerSettings">  
            <props>  
                <prop key="template_update_delay">5</prop> <!--检查模板是否更新  秒 --> 
            </props>  
        </property>  
    </bean>
下面具体讲讲标签应用,先列出原先的方式,再列出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中: 
<@shiro.authenticated>  
    </@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> 
对于必须authc的操作 必须 
重新登录  因为此时 的用户只是读取的 remember me(个人理解) 
并没有通过认证,因为tomcat重启过了 
不知道大家有没有遇到过该情况 可以 研究探讨下 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值