freemarker中使用shiro标签

来源:互联网 发布:java int 取绝对值 编辑:程序博客网 时间:2024/05/19 18:39
/** * 自定义一个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重启过了

不知道大家有没有遇到过该情况 可以 研究探讨下











  • shiro-freemarker-tags-0.1-SNAPSHOT.jar (14.2 KB)
  • 下载次数: 216
0 0
原创粉丝点击