zoukankan      html  css  js  c++  java
  • Spring+shiro配置JSP权限标签+角色标签+缓存

    Spring+shiro,让shiro管理所有权限,特别是实现jsp页面中的权限点标签,每次打开页面需要读取数据库看权限,这样的方式对数据库压力太大,使用缓存就能极大减少数据库访问量。

    下面记录下shiro配置JSP权限标签+角色标签+缓存的过程:

    1首先在配置文件xml中配置securityManager。

    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
            <!--认证管理器-->
            <property name="realm" ref="permissionsRealm" />
            <!-- 缓存管理器 -->
            <property name="cacheManager" ref="shiroCacheManager" />
        </bean>
        <!--认证管理器实现类-->
        <bean id="permissionsRealm" class="com.soft.security.Realm.PermissionsRealm" />
         <!--缓存管理器实现类,这里用的是系统自带的-->
        <bean id="shiroCacheManager"  class="org.apache.shiro.cache.MemoryConstrainedCacheManager"   />    

    2然后,在PermissionsRealm类中,重写doGetAuthorizationInfo方法,在方法中需要做两件事:(1)设置角色(2)设置权限点。代码如下:

    SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
    info.addRole("角色名");
    info.addStringPermission("权限点名");

    3.此时,在JSP页面中就可以调用标签验证权限与角色了。

      在页面顶部引用<%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> 标签库,

      然后在想触发权限点的地方写入:

    <shiro:hasPermission name="1111">  
        用户拥有权限
    </shiro:hasPermission>  

     如果用户有1111权限,则会显示“用户拥有权限”,同样,如果测试用户是否拥有某个角色,可以用以下标签:

    <shiro:hasRole name="管理员">
        用户拥有角色
    </shiro:hasRole>

    4.由于在1中,配置文件里面已经配置了缓存管理器,因此每次页面打开,后台只会读取一次用户角色+权限,后续都会用缓存,重新登陆后缓存自动清空。

  • 相关阅读:
    转 windows查看端口占用命令
    servlet 让浏览器输出中文,并成功打印出来.2种方法
    ctrl+shift+i eclipse快捷键,debug时显示全黑屏
    转 一台电脑安装多个tomcat
    如何从windows中拷贝文件到linux (ubuntu)??
    Eclipse Java注释模板设置简介,更改字体大小
    sikuli 如何 清空文本框中的内容??解决方法!
    servlet 中通过response下载文件
    servlet乱码 解决方法 2种方法
    关于JAVA路径 问题
  • 原文地址:https://www.cnblogs.com/linl/p/4042869.html
Copyright © 2011-2022 走看看