Javaの改善-05-shiro-承認の簡単な判断

ここに画像の説明を挿入


QQ 1274510382
Wechat JNZ_aming
Business AllianceQQグループ538250800
テクノロジートラブルQQグループ599020441
ソリューションQQグループ152889761
参加QQグループ649347320
共有学習QQグループ674240731ネットワークセキュリティ、ディープラーニング、組み込み、マシンエンハンスメント、バイオインテリジェンス、ライフサイエンスをテーマにした
時系列テクノロジー

Ding Ding Ding:製品はオンラインです—>公式のWeChatパブリック
アカウントに従ってください—済南ジニアン情報技術株式会社。人々の生計プロジェクト:店舗フランチャイズ/エンターテインメントデート/エンタープライズビジネスサークル/アウトソーシングパートタイム開発-プロジェクトリリース/
セキュリティプロジェクト:状況認識防御システム/イントラネット検査システム
クラウドサービスプロジェクト:クラウドホスト/ドメイン名の動的拡張/弾性ストレージ-データベース-クラウドディスク/ API-すべての
製品コンサルティング/サービスアフターセールス(同じ)

それは紙の上では常に浅いです、そして私はこの問題がなされなければならないことを絶対に知っています!
ビジネスを始めるための志を同じくするパートナーを探しています。Baotuan Didi amingの連絡先情報!


#この記事は、広告システムが自動的に広告を配信するためのものです

#侵害、削除がある場合は、すぐにご連絡ください




#3シロ認可の初期実現

ここに画像の説明を挿入

3.1役割の判断

3.1.1構成ファイルの変更

パスワードの直後に、ユーザーに含まれている役割名を追加するだけです。

 [users]
zhangsan=zs,role1,role2
lisi=ls

3.1.2コードを追加する

hasRole()は戻り値を使用して、ユーザーが指定されたロールを持っているかどうかを判別します。

 if(subject.isAuthenticated){
    
    
 		System.out.println("登录成功");
 		boolean hasRoleResult = SecurityUtils.getSubject().hasRole("role1");
		System.out.println("result:"+hasRoleResult);
}

ここに画像の説明を挿入
ここに画像の説明を挿入ここに画像の説明を挿入

 通过  subject 看是否 有角色

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

3.2判断権限

3.2.1構成ファイルを変更する

 [users]
zhangsan=zs,role1,role2
lisi=ls
[roles]
role1=permission1,permission2

ここに画像の説明を挿入

ここに画像の説明を挿入

3.2.2テストコードを追加する

認証が成功
すると、AuthenticationExceptionがあるかどうかによって承認が制御されます。
SecurityUtils.getSubject().checkPermission("permission");

ここに画像の説明を挿入

4レルム実装認定

4.1iniRealmを使用する

 public class ShiroRun {
    
    
 		public static void main(String[] args) {
    
    
 
 			SecurityManager securityManager = new DefaultSecurityManager();
			IniRealm iniRealm = new IniRealm("classpath:shiro.ini");
			securityManager.setRealm(iniRealm);
 			SecurityUtils.setSecurityManager(securityManager);
 			Subject subject = SecurityUtils.getSubject();
 //web 项目时,用户名和密码是客户端表单传递过来的用户名和密码。
 AuthenticationToken token = new UsernamePasswordToken("admin", 
"pwd");
 		try {
    
    
 //login()方法没有返回值,只能通过是否有异常判断是否登录成功。
				 subject.login(token);
				 System.out.println("登录成功");
 			} catch (UnknownAccountException e) {
    
    
 				System.out.println("账号不存在");
 			} catch (IncorrectCredentialsException e) {
    
    
				 System.out.println("密码错误");
 			} catch (AuthenticationException e) {
    
    
				 e.printStackTrace();
			 }
 		} 		
 	}

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_33608000/article/details/112847820