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中,配置文件里面已經配置了緩存管理器,因此每次頁面打開,后台只會讀取一次用戶角色+權限,后續都會用緩存,重新登陸后緩存自動清空。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM