我們之前通過配置檔案去獲取使用者角色許可權的資訊,但是有些時候希望從資料庫中讀取許可權資訊,此時就需要用到自定義realm。
public
class
user
public
void
setusername
(string username)
public string getpassword()
public
void
setpassword
(string password)
@override
public string tostring()
}
cachingrealm:帶有快取實現
authenticatingrealm:認證realm
authorizingrealm:授權realm
一般我們直接繼承authorizingrealm,因為它繼承了authenticatingrealm,
繼承authorizingrealm可以同時實現認證和授權功能。
public
class
userrealm
extends
authorizingrealm
//模擬許可權,手動新增
list
prilist =
newarraylist
();//許可權列表
prilist.
add(
"user:add");
prilist.
add(
"user:query");
******authorizationinfo info =
new******authorizationinfo()
;//新增角色
info.
addrole
("role1");
for(string string : prilist)
system.out.
println
("----授權完成---- ");
return info;
}/**
* 認證
*/@override
protected authenticationinfo dogetauthenticationinfo
(authenticationtoken token)
throws authenticationexception
}
public
class
userrealmtest
catch
(exception e)
}}
這裡面使用**注入自定義的realm,如果使用配置檔案的話
//建立userrealm
userrealm userrealm =
newuserrealm()
;//給securitymanager注入userrealm,也可在ini檔案中配置
((realmsecuritymanager) securitymanager)
.setrealm
(userrealm)
;
輸入以下內容,userrealm的全限定類名需要按照自己的來寫。
[main]
#配置自定義realm
userrealm=com.sks.realm.userrealm
#注入自定義的realm
securitymanager.realm=$userrealm
類名=全限定類名:會自動建立乙個類例項
變數名.屬性=值:會自動呼叫相應的setter方法進行賦值
$變數名:引用之前的乙個物件例項
shiro之自定義realm
一 為當限前登入的使用者授予角色和權 protected authorizationinfo dogetauthorizationinfo principalcollection principals 這邊我一直沒找到什麼好的方法 就是在使用者登陸的時候,就要進行這一步的驗證,但是沒有實現,感覺有點...
Shiro 學習筆記(3) 自定義 Realm
自定義的 realm 使得我們使用安全資料來源更加靈活,在自定義的 realm 中,我們就可以自己控制認證和授權的邏輯了。同時我們還簡單介紹了一下在多個 realm 同時存在的情況下,我們可以配置我們的認證策略來滿足我們的需求。前面兩節我們已經介紹過 inirealm 和 jdbcrealm,這一節...
學習筆記之自定義控制項
學習初衷 在工作實際開發過程中,原有的安卓控制項已不能滿足實際的功能需求,而且有些應用還需要一些獨特的展示效果,這時就需要自定義控制項來定製控制項去滿足我們的需求了。public class customview extends view public customview context cont...