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中,配置文件里面已经配置了缓存管理器,因此每次页面打开,后台只会读取一次用户角色+权限,后续都会用缓存,重新登陆后缓存自动清空。

  • 相关阅读:
    Vue项目里添加特殊字体或 某些字体乱码的问题
    Vue 事件修饰符
    js 判断是什么浏览器、是否为谷歌浏览器
    Vue 打印预览功能
    Vue v-if与v-show的区别
    js 下载文件/导出
    使用Mysql Workbench 导入数据库提示 ERROR 1227 (42000) at line 18: Access denied; you need (at least one of) the SUPER privilege(s) for
    java 使用注释校验数据有效性
    java poi分批次导入Excel
    浅谈java中源码常见的几个关键字(native,strictfp,transient,volatile)
  • 原文地址:https://www.cnblogs.com/linl/p/4042869.html
Copyright © 2011-2022 走看看