(四) shiro权限与角色
生活随笔
收集整理的這篇文章主要介紹了
(四) shiro权限与角色
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 前言 :?
shiro代碼參考java1234網站《一頭扎進shiro》視頻敲出來的,原理這些請參視頻 ,
點擊 下載源碼
2 項目結構圖
3 代碼
RoleTest.java
package shiro.test;import org.apache.shiro.subject.Subject;import shiro.util.ShiroUtil;public class RoleTest {public void testRole(){String configFile = "classpath:shiro_role_authority.ini";String username="jack";String password="123456";String roleName="role2";Subject currentUser = ShiroUtil.login(configFile, username, password);boolean flag = currentUser.hasRole(roleName);if(flag){System.out.println(username+"有"+roleName+"角色");}else{System.out.println(username+"沒有"+roleName+"角色");}}public void testAuthority(){String configFile = "classpath:shiro_role_authority.ini";String username="jack";String password="123456";String authorityName="user:delete";Subject currentUser = ShiroUtil.login(configFile, username, password);boolean flag = currentUser.isPermitted(authorityName);if(flag){System.out.println(username+"有"+authorityName+"權限");}else{System.out.println(username+"沒有"+authorityName+"權限");}}public static void main(String[] args) {RoleTest roleTest = new RoleTest();//測試是否有角色roleTest.testRole();//測試是否有權限roleTest.testAuthority();}}
ShiroUtil.java
package shiro.util;import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.config.IniSecurityManagerFactory; import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.subject.Subject; import org.apache.shiro.util.Factory;public class ShiroUtil {public static Subject login(String configFile,String username,String password){// 讀取配置文件,初始化SecurityManager工廠Factory<SecurityManager> factory = new IniSecurityManagerFactory(configFile);// 獲取securityManager實例SecurityManager securityManager = factory.getInstance();// 把securityManager綁定到SecurityUtils中SecurityUtils.setSecurityManager(securityManager);// 得到當前執行的用戶Subject currentUser = SecurityUtils.getSubject();// 創建token令牌,用戶名/密碼UsernamePasswordToken token = new UsernamePasswordToken(username,password);// 身份驗證try{currentUser.login(token);System.out.println("身份驗證成功");}catch(Exception e){e.printStackTrace();System.out.println("身份驗證失敗");}return currentUser;} }
shiro_role_authority.ini
[users] java1234=123456,role1,role2 jack=123456,role2 [roles] role1=user:select role2=user:add,user:update,user:delete
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>shiro.leanring</groupId><artifactId>shiro</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- 添加 shiro需要一些包 開始 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><version>1.2.4</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.12</version></dependency> <dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!-- 添加 shiro需要一些包 結束 --><!-- 添加數據源 開始 --><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.37</version></dependency><!-- 添加數據源 結束 --></dependencies> </project>
4 結果
運行RoleTest.java ,出現
身份驗證成功 jack有role2角色 身份驗證成功 jack有user:delete權限
總結
以上是生活随笔為你收集整理的(四) shiro权限与角色的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (三) shiro通过jdbc连接数据库
- 下一篇: (五) shiro web应用