最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Apache Shiro 使用手冊(四) Realm 實現(xiàn)

 更新時間:2014年06月09日 23:39:13   作者:  
在認證、授權(quán)內(nèi)部實現(xiàn)機制中都有提到,最終處理都將交給Real進行處理。因為在Shiro中,最終是通過Realm來獲取應(yīng)用程序中的用戶、角色及權(quán)限信息的

在認證、授權(quán)內(nèi)部實現(xiàn)機制中都有提到,最終處理都將交給Real進行處理。因為在Shiro中,最終是通過Realm來獲取應(yīng)用程序中的用戶、角色及權(quán)限信息的。通常情況下,在Realm中會直接從我們的數(shù)據(jù)源中獲取Shiro需要的驗證信息??梢哉f,Realm是專用于安全框架的DAO.

一、認證實現(xiàn)

正如前文所提到的,Shiro的認證過程最終會交由Realm執(zhí)行,這時會調(diào)用Realm的getAuthenticationInfo(token)方法。
該方法主要執(zhí)行以下操作:
1、檢查提交的進行認證的令牌信息
2、根據(jù)令牌信息從數(shù)據(jù)源(通常為數(shù)據(jù)庫)中獲取用戶信息
3、對用戶信息進行匹配驗證。
4、驗證通過將返回一個封裝了用戶信息的AuthenticationInfo實例。
5、驗證失敗則拋出AuthenticationException異常信息。

而在我們的應(yīng)用程序中要做的就是自定義一個Realm類,繼承AuthorizingRealm抽象類,重載doGetAuthenticationInfo (),重寫獲取用戶信息的方法。

復(fù)制代碼 代碼如下:

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;
  }
}

二、授權(quán)實現(xiàn)

而授權(quán)實現(xiàn)則與認證實現(xiàn)非常相似,在我們自定義的Realm中,重載doGetAuthorizationInfo()方法,重寫獲取用戶權(quán)限的方法即可。

復(fù)制代碼 代碼如下:

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;
  }
}

相關(guān)文章

  • Ubuntu無網(wǎng)絡(luò)標識的問題及解決

    Ubuntu無網(wǎng)絡(luò)標識的問題及解決

    這篇文章主要介紹了Ubuntu無網(wǎng)絡(luò)標識的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • apache啟用gzip壓縮的實現(xiàn)方法

    apache啟用gzip壓縮的實現(xiàn)方法

    對于部署在Linux服務(wù)器上的PHP程序,在服務(wù)器支持的情況下,我們建議你開啟使用Gzip Web壓縮,以前腳本之家介紹了iis中的開啟方法,這篇文章主要介紹了linux中apache的開啟方法
    2013-06-06
  • Linux下的fdisk命令用法詳解

    Linux下的fdisk命令用法詳解

    這篇文章主要介紹了Linux下的fdisk用法,大家都知道fdisk功能真的很強大,用它可以劃分出最復(fù)雜的分區(qū),本文重點給大家介紹Linux下的fdisk命令用法,感興趣的朋友一起看看吧
    2018-05-05
  • 使用 libevent 和 libev 提高網(wǎng)絡(luò)應(yīng)用性能的方法

    使用 libevent 和 libev 提高網(wǎng)絡(luò)應(yīng)用性能的方法

    構(gòu)建現(xiàn)代的服務(wù)器應(yīng)用程序需要以某種方法同時接收數(shù)百、數(shù)千甚至數(shù)萬個事件,無論它們是內(nèi)部請求還是網(wǎng)絡(luò)連接,都要有效地處理它們的操作
    2011-05-05
  • Apache加速模塊mod_pagespeed安裝使用詳細介紹

    Apache加速模塊mod_pagespeed安裝使用詳細介紹

    這篇文章主要介紹了Apache加速模塊mod_pagespeed安裝使用詳細介紹,需要的朋友可以參考下
    2014-03-03
  • Linux系統(tǒng)下如何實現(xiàn)修改主機名

    Linux系統(tǒng)下如何實現(xiàn)修改主機名

    這篇文章主要介紹了Linux系統(tǒng)下如何實現(xiàn)修改主機名問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • Linux中搭建完整的samba服務(wù)器全攻略(centos版)

    Linux中搭建完整的samba服務(wù)器全攻略(centos版)

    smb是一個協(xié)議名,它能被用于Web連接和客戶端與服務(wù)器之間的信息溝通。這篇文章主要介紹了Linux中搭建samba服務(wù)器全攻略(centos版),需要的朋友可以參考下
    2018-11-11
  • ubuntu中編寫shell腳本開機自動啟動(推薦)

    ubuntu中編寫shell腳本開機自動啟動(推薦)

    這篇文章主要介紹了ubuntu中編寫shell腳本開機自動啟動,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 使用Apache?Hudi?加速傳統(tǒng)的批處理模式的方法

    使用Apache?Hudi?加速傳統(tǒng)的批處理模式的方法

    這篇文章主要介紹了Apache?Hudi?如何加速傳統(tǒng)的批處理模式,借助Apache Hudi,我們希望在將數(shù)據(jù)攝取到數(shù)據(jù)湖中的同時,找到更好的重復(fù)數(shù)據(jù)刪除和數(shù)據(jù)版本控制優(yōu)化解決方案,需要的朋友可以參考下
    2022-04-04
  • Ubuntu 20.04雙拼輸入法的安裝步驟

    Ubuntu 20.04雙拼輸入法的安裝步驟

    這篇文章主要介紹了Ubuntu 20.04雙拼輸入法的安裝步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評論

海城市| 芮城县| 民乐县| 盐边县| 康定县| 绥芬河市| 廊坊市| 翼城县| 乌苏市| 沙洋县| 古丈县| 嵩明县| 汉阴县| 泰宁县| 洛阳市| 崇州市| 巴塘县| 龙南县| 黄骅市| 龙井市| 炎陵县| 会昌县| 格尔木市| 太白县| 米易县| 闻喜县| 乌兰察布市| 灵台县| 建瓯市| 栾城县| 沙洋县| 林口县| 定边县| 佛坪县| 运城市| 天门市| 安达市| 洪湖市| 布尔津县| 五华县| 融水|