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路由...