Shiro安全框架入門

2021-06-25 07:08:20 字數 2340 閱讀 5906

shiro框架中,有3個重要的概念

1.subject

類似於我們平常所使用的「使用者」概念,但使用者常常是指人,而subject還可能是其他的第三方軟體等等,所以在這裡用的是subject這一概念而不是user

2.securitymanager

shiro架構中的核心,為subject管理安全操作

3.reamls

連線subject和securitymanager的橋梁,相當於dao層,配置shiro時,最起碼要有乙個reamls

小demo:

factoryfactory = new inisecuritymanage***ctory("classpath:shiro.ini");

securitymanager securitymanager = factory.getinstance();

securityutils.setsecuritymanager(securitymanager);

authenticationtoken token = new usernamepasswordtoken("marksg","password");

subject currentuser = securityutils.getsubject();

currentuser.login(token);

1.新建factory,載入classpath下的shiro.ini配置檔案,檔案內容在後面給出。

2.securitymanager例項化。

3.使securitymanager可訪問

4.獲取使用者名稱和密碼

5.獲取當前使用者

6.login

shiro.ini:

[user]

residentskroob = 12345, president

darkhelmet = ludicrousspeed, darklord, schwartz

lonestarr = vespa, goodguy, schwartz

mark sg=password,test

[roles]

admin = *

schwartz = lightsaber:*

goodguy = winnebago:drive:eagle5

[urls]
test/target=roles[admin]
test/target1=anno
test/target2=authc

其中,user的命名規則為:

username=password,role1,role2......rolen

roles的命名規則為:

rolename=perm1,perm2,......permn

所以,上面的ini檔案中

mark sg=password,test,admin
admin = *

的意思是,mark sg這principal(username)的credential(password)為password,擁有的角色為test,admin 

其中admin有"*"這一許可權

[urls]下表示的含義為:

(1)test/target0=roles[admin],表示路徑test/target1只有擁有admin這一role的使用者才可以訪問

(2)test/target1=anno,表示路徑test/target1是所有人都可以訪問的路徑

(3)test/target2=authc,表示路徑test/target2只有通過了登入驗證的使用者才有許可權可以訪問

那麼回到**中的第4行

authenticationtoken token = new usernamepasswordtoken("marksg","password");

subject currentuser = securityutils.getsubject();

currentuser.login(token);

因為我們已經讀取了ini檔案了,所以這裡的我們的login操作時,

實際上市將token這一物件傳入,然後檢查是否有符合的principal和credential都符合的情況

如果沒有則會報錯,有的話則成功login

在login以後可以用currentuser.getprincipal()輸出當前的subject

php CI框架入門

顯示2.控制器認識 controller是框架控制器資料夾 我們來寫一下自己的控制器,控制器檔名要和類名一直,類名首字母大寫 test.php檔案 defined basepath or exit no direct script access allowed class test extends ...

SSH框架入門

目前最新版本是spring framework 2.5.6 with dependencies.zip,該包不僅包含spring的開發包,而且包含spring編譯和執行所依賴的第三方類庫 aspectj 該路徑下包含了spring支援aspectj所需類的源 也包含了相關測試用例檔案 dist 該資...

Tigo框架入門

給大家介紹乙個go語言的web framework,tigo框架。tigo框架的設計風格有點類似於tornado,從python轉go的小夥伴可以看看。首先,安裝 go get github.com karldoenitz tigo 安裝結束後來編寫乙個簡單地hello world,如下 url路由...