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

  • 相关阅读:
    php获取OS信息
    坑爹的IE quirk模式
    [转]mysql privileges
    [转]VSFTPD的设置选项
    php性能分析工具xhprof
    php扩展安装
    又是万恶的IE....6
    ASP.NET操作文件(文件夹)简单生成html操作示例
    asp.net文件操作类
    c++/clr与c#的性能比较
  • 原文地址:https://www.cnblogs.com/linl/p/4042869.html
Copyright © 2020-2023  润新知