Shiro安全框架第四篇| Shiro自定義Realm進行認證授權
阿新 • • 發佈:2018-12-06
SHiro自定義Realm
首先在resource下新建user.ini
1[users]
2jiuyue=12345,admin
3[roles]
4admin=user:delete,user:update
然後測試類下新建IniRealmTest測試類,跟前面不一樣的是需要
1 IniRealm iniRealm =new IniRealm("classpath:user.ini");
new IniRealm物件將自定義的user.ini配置到IniRealm作為引數進行例項化。
1/** 2 * Create bySeptember 3 * 2018/10/25 4 * 19:51 5 */ 6public class IniRealmTest { 7 @Test 8 public void testAuthentication(){ 9 IniRealm iniRealm =new IniRealm("classpath:user.ini"); 10 11 //1.構建SecurityManager環境 12 DefaultSecurityManager defaultSecurityManager= new DefaultSecurityManager(); 13 defaultSecurityManager.setRealm(iniRealm); 14 SecurityUtils.setSecurityManager(defaultSecurityManager); 15 Subject subject = SecurityUtils.getSubject(); 16 //2.主體提交授權認證 17 UsernamePasswordToken token = new UsernamePasswordToken("jiuyue","12345"); 18 subject.login(token); 19 System.out.println("isAuthenticate:"+subject.isAuthenticated()); 20 System.out.println("user:"); 21 subject.checkRoles("admin"); 22 subject.checkPermission("user:delete"); 23 subject.checkPermissions("user:delete","user:update"); 24 25 } 26}
程式碼分析:
首先通過new DefaultSecurityManager()構建SecurityManager環境,將IniRealm設定到環境中
1( defaultSecurityManager.setRealm(iniRealm))
接著獲取 SecurityManager 並繫結到 SecurityUtils。
通過 SecurityUtils 得到 Subject,其會自動繫結到當前執行緒;如果在 web 環境在請求結束時需要解除繫結。然後獲取身份驗證的 Token,如使用者名稱,密碼。
呼叫 subject.login 方法進行登入,其會自動委託給 SecurityManager.login 方法進行登入。
專題連結:
Shiro安全框架第一篇| 什麼是Apache Shiro?
“掃碼關注“