-2- springboot学習フレームワーク四郎の四郎の統合と史郎認証と承認プロセス

1. [追加の依存

1          <依存性>
 2              <のgroupId> org.springframework.boot </ groupIdを>
 3              <たartifactId>ばねブートスタータウェブ</たartifactId>
 4          </依存>
 5          <依存性>
 6              <のgroupId> MySQLの</のgroupId>
 7              <たartifactId> MySQLのコネクタからJava </たartifactId>
 8          </依存>
 9          <依存性>
 10              <のgroupId> org.springframework.boot </ groupIdを>
 11              <たartifactId>ばねブートスタータ試験</たartifactId>
12              <スコープ>テスト</スコープ>
 13                 </依存>
 14         <依存性> 
15 <のgroupId> org.apache.shiro </ groupIdを> 
16 <たartifactId>シロスプリング</たartifactId> 
17 <バージョン> 1.4.0 </バージョン> 
18 </依存>
 19                       

2.史郎認証と承認プロセス

2.1共通API:

// 対応する役割がある場合 
subject.hasRole(「ルート」// サブジェクト名取得
subject.getPrincipalを()
 // 対応する文字、ノーリターン値判定の内部に直接にSecurityManagerがあるかどうかを確認 
subject.checkRole(「管理者は、 " // チェックに対応する役割がある場合 
subject.hasRole(" ADMIN」// ログ 
subject.logoutは();

2.2史郎認証プロセス:

  

 

 

 テストコード:

1  パッケージnet.xdclass.xdclassshiro;
 2  
。3  インポートorg.apache.shiro.SecurityUtils;
 4  インポートorg.apache.shiro.authc.UsernamePasswordToken;
 5  インポートorg.apache.shiro.mgt.DefaultSecurityManager;
 6  インポートorg.apache.shiro .realm.SimpleAccountRealm;
 7。 インポートorg.apache.shiro.subject.Subject;
 8。 インポートorg.junit.Before;
 9。 インポートorg.junit.Test;
 10  
11  / ** 
12である *四郎認証処理:
 13  * 1は、セキュリティマネージャを構成環境
 14  * 2.コールSubject.loginは()認証を実行します
15  *認証3.SecurityManager
 16  *行う認証4.Authenticator
 17  *レルムがベリファイ
 18である  * / 
19  パブリック クラスQuicksStratTest {
 20は 
21である     / ** 
22れる      * accountRealm同等の効果データベース
 23がある      * / 
24      プライベート SimpleAccountRealm accountRealm = 新しい新しいSimpleAccountRealm();
 25  
26は、     プライベート DefaultSecurityManager defaultSecurityManager = 新しい新しいDefaultSecurityManager();
 27  
28      @Before
 29      公共 ボイドのinit(){
 30          //データ・ソース初期化
31である          accountRealm.addAccount( "LCH"、 "123" ;)
 32          accountRealm.addAccount( "ジャック"、 "345" 33は、         // ビルド環境
34は         、defaultSecurityManager.setRealm(accountRealm)
 35  
36      }
 [37  
38であります     @テスト
 39      公共 ボイドtestAuthentication(){
 40          // 現在のコンテキストに設定
41である         SecurityUtils.setSecurityManager(defaultSecurityManager);
 42である         // 現在の主題を設定する(アプリケーションがユーザを適用)
43である          件名件名= SecurityUtils.getSubject();
 44であります         // シミュレートされたユーザ入力
45          UsernamePasswordToken usernamePasswordToken = 新しい新 UsernamePasswordToken( "LCH"、 "123" );
 46である         //は、実際のSecurityManager = this.securityManager.login件名件名(このトークン)ログインメソッドを呼び出す
47          subject.login( usernamePasswordToken);
 48          のSystem.out.println( "認証結果(許可された場合):" + subject.isAuthenticated());   // trueにプリント
49  
50  
51である     }
 52です }

ユーザ認証情報のオーセンティケータと呼ばれるこのログイン方法上記usernamePasswordToken

2.3史郎の承認プロセス:

テストコード:

1  パッケージnet.xdclass.xdclassshiro;
 2  
。3  インポートorg.apache.shiro.SecurityUtils;
 4  インポートorg.apache.shiro.authc.UsernamePasswordToken;
 5  インポートorg.apache.shiro.mgt.DefaultSecurityManager;
 6  インポートorg.apache.shiro .realm.SimpleAccountRealm;
 7  インポートorg.apache.shiro.subject.Subject;
 8  インポートorg.junit.Before;
 9  インポートorg.junit.Test;
 10  
11  / ** 
12である *四郎認証プロセスとAPIを使用する:
 13である * 1。地殻環境のSecurityManager
 14  * 2.Subject承認を実行
15  * 3.SecurityManager認証および許可
 16  * 4.Authenticator許可実行
 17  レルム検証* 5許可を
 18れる  * / 
19  パブリック クラスQuicksStratTest2 {
 20は、 
21である     / ** 
22れる      * accountRealm同等の効果データベース
 23がある      * / 
24      プライベート accountRealm = SimpleAccountRealm 新しい新しいSimpleAccountRealm();
 25  
26である     プライベート DefaultSecurityManager defaultSecurityManager = 新しい新; DefaultSecurityManager()
 27  
28      @Before
 29      公共 ボイドのinit(){
 30         //は、データ・ソースの初期化、ロール接合にユーザ
31は          accountRealm.addAccount( "LCH"、 "123"、 "ルート"、 "管理" );
 32          accountRealm.addAccount( "ジャック"、 "345"、 "ユーザー" ) ;
 33          // ビルド環境
34である         defaultSecurityManager.setRealm(accountRealm);
 35      }
 36  
37 [      @Test
 38は     公共 ボイドtestAuthentication(){
 39          //は現在のコンテキストに設定
40          SecurityUtils.setSecurityManager(defaultSecurityManager)を、
 41れる         // 現在の被写体(アプリケーション・アプリケーションを設定しますユーザ)
42は          =件名件名SecurityUtils.getSubject();
 43である         // シミュレーションユーザ入力
44は          UsernamePasswordToken usernamePasswordToken = 新しい新 UsernamePasswordToken( "LCH"、 "123" );
 45          //が実際にログイン方法のSecurityManager件名対象= this.securityManager.login(このトークンを呼び出し); 
46は         subject.login(usernamePasswordToken);
 47  
48          のSystem.out.println( "認証結果(許可した場合):" + subject.isAuthenticated()); // 結果:trueに
 49          // 最終呼び出しは組織です。方法apache.shiro.authz.ModularRealmAuthorizer.hasRole 
50         のSystem.out.println( "に対応する文字がある場合:" + subject.hasRole( "ルート"    ))。// 結果:trueに
 51         // ログインアカウント取得
52          のSystem.out.println( "getPrincipalを():" + subject.getPrincipal());   // getPrincipal():LCH 
53          subject.logout();
 54          のSystem.out.println後(「ログアウト認証結果:「+ subject.isAuthenticated());   // ログアウト認証結果:falseに
55  
56は 
57である     }
 58 }
subject.hasRole()メソッドは、実際に呼び出され hasRoleも権限チェックのSecurityManagerのメソッドを:

hasRoleもSecurityManagerのメソッドは、チェックするためにhasRoleも道の承認者が呼び出されます

 

 これは3つのカテゴリーを達成しています:

  使用SimpleAccountRealmテストコードは、その承認ロジックを発見した実装のAuthorizingRealmは次の通りであることを、我々は最初のクラスに入るので、ここでは、AuthorizingRealmから継承されます。

  

 

おすすめ

転載: www.cnblogs.com/enjoyjava/p/12057947.html
おすすめ