程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 權限框架,java權限框架

權限框架,java權限框架

編輯:JAVA綜合教程

權限框架,java權限框架


之前說了權限認證,其實也就是登錄驗證身份

這次來說說shiro的授權

shiro可以針對角色授權,或者訪問資源授權

兩者都行,但是在如今的復雜系統中,當然使用後者,如果你是小系統或者私活的話,前者即可,甚至可以不用,我懂的

好吧,上代碼:

首先新建一個ini,登陸信息以及權限配置好

 1 #用戶
 2 [users]
 3 #eric 用戶nathan的密碼是123456,擁有boss以及hr兩個權限
 4 eric=123456,boss,hr
 5 merry=123456,hr
 6 
 7 #權限
 8 [roles]
 9 #角色對用資源user來說擁有create以及update權限
10 boss=user:create,user:update
11 #角色對用資源user來說擁有create以及delete權限
12 hr=user:create,user:delete
13 #角色對用資源user來說擁有create權限
14 tl=user:create

 

 

以下代碼先登陸,後授權,分為角色以及資源

 1 @Test
 2     public void testAuthorization() {
 3 
 4         // 創建SecurityManager工廠
 5         Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro/shiro-permission.ini");
 6         // 創建SecurityManager
 7         SecurityManager securityManager = factory.getInstance();
 8         // 將SecurityManager設置到系統運行環境,和spring後將SecurityManager配置spring容器中,一般單例管理
 9         SecurityUtils.setSecurityManager(securityManager);
10         // 創建subject
11         Subject subject = SecurityUtils.getSubject();
12         // 創建token令牌
13         UsernamePasswordToken token = new UsernamePasswordToken("eric", "123456");
14         // 執行認證
15         try {
16             subject.login(token);
17         } catch (AuthenticationException e) {
18             e.printStackTrace();
19         }
20         System.out.println("認證狀態:" + subject.isAuthenticated());
21         // 認證通過後執行授權
22 
23         // 基於角色的授權
24         // hasRole傳入角色標識
25         boolean ishasRole = subject.hasRole("hr");
26         System.out.println("單個角色判斷" + ishasRole);
27         // hasAllRoles是否擁有多個角色
28         boolean hasAllRoles = subject.hasAllRoles(Arrays.asList("boss", "hr", "tl"));
29         System.out.println("多個角色判斷" + hasAllRoles);
30 
31         // 使用check方法進行授權,如果授權不通過會拋出異常
32         // subject.checkRole("employee");
33 
34         // 基於資源的授權
35         // isPermitted傳入權限標識符
36         boolean isPermitted = subject.isPermitted("user:create:1");
37         System.out.println("單個權限判斷" + isPermitted);
38 
39         boolean isPermittedAll = subject.isPermittedAll("user:create:1",
40                 "user:delete");
41         System.out.println("多個權限判斷" + isPermittedAll);
42 
43         // 使用check方法進行授權,如果授權不通過會拋出異常
44         subject.checkPermission("items:create:1");
45 
46     }

 

這些都是簡單的配置

過後會講講如何配合springmvc spring 以及mybatis進行動態認證授權

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved