1. 程式人生 > >shiro進行權限控制的四種方式

shiro進行權限控制的四種方式

shiro

```我們使用shiro進行權限控制 有以下幾種方式 1. URL攔截權限控制:基於filter過濾器實現 我們在spring配置文件中配置shiroFilter時配置 <!--指定URL級別攔截策略 --> <property name="filterChainDefinitions"> <value> /css/ = anon /js/ = anon /images/ = anon /validatecode.jsp = anon /login.jsp = anon /userActionlogin.action = anon /pagebasestaff.action = perms["staff-list"] / = authc </value> </property> 2. 方法註解權限控制:基於代理技術實現 我們在代碼方法上用註解聲明調用該方法需要什麽權限。 首先要在spring配置文件中進行聲明開啟shiro註解: <!-- 開啟shiro框架註解支持 -->* <bean id="defaultAdvisorAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"> <!-- 必須使用cglib方式為Action對象創建代理對象 --> <property name="proxyTargetClass" value="true"/> </bean> <!-- 配置shiro框架提供的切面類,用於創建代理對象 --> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"/> 然後在方法上聲明: @RequiresPermissions("staff-delete") //執行這個方法,需要當前用戶具有staff-delete這個權限 public String deleteBatch(){ staffService.deleteBatch(ids); return LIST; } * 3. 頁面標簽權限控制:頁面表簽技術實現 首先要在jsp頁面進入表簽: <%@ taglib uri="http://shiro.apache.org/tags" prefix="shiro" %> 然後包裹權限控制的內容 <shiro:hasPermission name="Permission"> xxxxxxxxxxxxxxxx </shiro:hasPermission> 4.代碼級別權限控制: public String edit(){ Subject subject = SecurityUtils.getSubject(); subject.checkPermission("staff-edit"); Staff staff = staffService.findById(model.getId()); staff.setName(model.getName()); staff.setTelephone(model.getTelephone()); staff.setHaspda(model.getHaspda()); staff.setStandard(model.getStandard()); staff.setStation(model.getStation()); staffService.update(staff); return LIST; } 總結: 使用shiro進行權限控制時 這四種方法並不是進行單一的使用,是相互結合的使用從而完整的進行權限控制。

shiro進行權限控制的四種方式