1)shiro是一個(gè)常用的安全框架,包括以下幾個(gè)模塊:認(rèn)證、授權(quán)、session管理、rememberme、加密、websurport等。
(2)它里面包括三個(gè)重要概念:subject(所有的登錄或者申請(qǐng)授權(quán)者)、SecurityManager(調(diào)用驗(yàn)證邏輯和管理subject)、Realm(賬號(hào)和密碼所在地,類似datasource,一般要用戶自己實(shí)現(xiàn)AuthorizingRealm)
(3)在配置上,web.xml中設(shè)置一個(gè)過(guò)濾器委托代理DelegatingFilterProxy,必須對(duì)應(yīng)到一個(gè)springbean的過(guò)濾器ShiroFilterFactoryBean上面,此工廠類關(guān)鍵的屬性有:loginurl【登錄的頁(yè)面路徑】, nopermmisionurl【沒(méi)權(quán)限跳轉(zhuǎn)的路徑】, unauthorizedUrl【認(rèn)證失敗跳轉(zhuǎn)的路徑】,filterChainDefinitions【過(guò)濾鏈,對(duì)應(yīng)anon, user和authc】
(4)繼承了AuthorizingRealm之后,要重寫其中的認(rèn)證和授權(quán)方法,認(rèn)證方法有subject.login觸發(fā),授權(quán)方法有以下三種方式觸發(fā):shiro標(biāo)簽,例如shiro:hasPermission、shrio:hasRoles等;shrio注解@RequiresRoles、@RequiresPermissions等;java代碼,例如subject.hasRole、subject.isPermitted等