Shiro學習筆記之自定義Realm實現認證和授權

2021-10-08 12:58:05 字數 2017 閱讀 4232

我們之前通過配置檔案去獲取使用者角色許可權的資訊,但是有些時候希望從資料庫中讀取許可權資訊,此時就需要用到自定義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...