? ? ? ? IniRealm是Shiro提供一種Realm實(shí)現(xiàn)。用戶、角色、權(quán)限等信息集中在一個(gè).ini文件那里。

? ? ? ? users開始的標(biāo)簽說明開始定義用戶認(rèn)證信息。這里有兩個(gè)用戶,他們的用戶名分別是tom、jer,密碼都是123.tom的角色有admin、user,而jer只有user角色。roles開始的標(biāo)簽開始定義角色擁有的權(quán)限標(biāo)識(shí),admin角色有user:delete權(quán)限,user角色有user.update權(quán)限標(biāo)識(shí)。
? ? ? ? 在編寫完成這個(gè)Ini文件之后,下面開始測(cè)試。

? ? ? ? 這次使用的是IniRealm實(shí)現(xiàn)類。在構(gòu)建IniRealm時(shí)需要傳入resourcePath來表示ini文件的路徑。這個(gè)路徑和你放置的Ini文件路徑相關(guān)。我使用的是Idea開發(fā)工具,src包為source root,user.ini放置在src/test下,所以是classpath:test/user.ini。
? ? ? ? 同樣的,我們顯示的實(shí)例一個(gè)Token,在27行。然后在28行檢查是否可以認(rèn)證、在29行檢查是否具有user角色,在30行檢查是否具有權(quán)限。
? ? ? ? 在28行檢查過程中,如果拋出org.apache.shiro.authc.UnknownAccountException。這表示不存在名為jer的賬號(hào)。
? ? ? ? 在28行檢查過程中,如果拋出org.apache.shiro.authc.IncorrectCredentialsException。這表示密碼有誤,Credentials意味資格證書。
? ? ? ? 在29行和30檢查過程中,如果不具有相應(yīng)的角色或權(quán)限,他們都拋出同樣的異常org.apache.shiro.authz.UnauthorizedException。緊隨異常類其后的異常信息會(huì)給出是不具有相應(yīng)的權(quán)限還是角色。