Apache Shiro 使用手册(四)Realm 实现
生活随笔
收集整理的這篇文章主要介紹了
Apache Shiro 使用手册(四)Realm 实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在認證、授權內部實現機制中都有提到,最終處理都將交給Real進行處理。因為在Shiro中,最終是通過Realm來獲取應用程序中的用戶、角色及權限信息的。通常情況下,在Realm中會直接從我們的數據源中獲取Shiro需要的驗證信息。可以說,Realm是專用于安全框架的DAO。?
一、認證實現?
正如前文所提到的,Shiro的認證過程最終會交由Realm執行,這時會調用Realm的getAuthenticationInfo(token)方法。?
該方法主要執行以下操作:
1、檢查提交的進行認證的令牌信息?
2、根據令牌信息從數據源(通常為數據庫)中獲取用戶信息?
3、對用戶信息進行匹配驗證
4、驗證通過將返回一個封裝了用戶信息的AuthenticationInfo實例
5、驗證失敗則拋出AuthenticationException異常信息
而在我們的應用程序中要做的就是自定義一個Realm類,繼承AuthorizingRealm抽象類,重載doGetAuthenticationInfo (),重寫獲取用戶信息的方法。?
Java代碼??protected?AuthenticationInfo?doGetAuthenticationInfo(AuthenticationToken?authcToken)?throws?AuthenticationException?{?? ????????UsernamePasswordToken?token?=?(UsernamePasswordToken)?authcToken;?? ????????User?user?=?accountManager.findUserByUserName(token.getUsername());?? ????????if?(user?!=?null)?{?? ????????????return?new?SimpleAuthenticationInfo(user.getUserName(),?user.getPassword(),?getName());?? ????????}?else?{?? ????????????return?null;?? ????????}?? }??
二、授權實現?
而授權實現則與認證實現非常相似,在我們自定義的Realm中,重載doGetAuthorizationInfo()方法,重寫獲取用戶權限的方法即可。?
Java代碼??protected?AuthorizationInfo?doGetAuthorizationInfo(PrincipalCollection?principals)?{?? ????????String?userName?=?(String)?principals.fromRealm(getName()).iterator().next();?? ????????User?user?=?accountManager.findUserByUserName(userName);?? ????????if?(user?!=?null)?{?? ????????????SimpleAuthorizationInfo?info?=?new?SimpleAuthorizationInfo();?? ????????????for?(Group?group?:?user.getGroupList())?{?? ????????????????info.addStringPermissions(group.getPermissionList());?? ????????????}?? ????????????return?info;?? ????????}?else?{?? ????????????return?null;?? ????????}?? }??
來源:?http://kdboy.iteye.com/blog/1169631
來自為知筆記(Wiz)
一、認證實現?
正如前文所提到的,Shiro的認證過程最終會交由Realm執行,這時會調用Realm的getAuthenticationInfo(token)方法。?
該方法主要執行以下操作:
1、檢查提交的進行認證的令牌信息?
2、根據令牌信息從數據源(通常為數據庫)中獲取用戶信息?
3、對用戶信息進行匹配驗證
4、驗證通過將返回一個封裝了用戶信息的AuthenticationInfo實例
5、驗證失敗則拋出AuthenticationException異常信息
而在我們的應用程序中要做的就是自定義一個Realm類,繼承AuthorizingRealm抽象類,重載doGetAuthenticationInfo (),重寫獲取用戶信息的方法。?
Java代碼??
二、授權實現?
而授權實現則與認證實現非常相似,在我們自定義的Realm中,重載doGetAuthorizationInfo()方法,重寫獲取用戶權限的方法即可。?
Java代碼??
來源:?http://kdboy.iteye.com/blog/1169631
來自為知筆記(Wiz)
轉載于:https://www.cnblogs.com/jeffen/p/6185604.html
總結
以上是生活随笔為你收集整理的Apache Shiro 使用手册(四)Realm 实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bzoj 3667
- 下一篇: Qt::ConnectionType(信