shiroWeb項目-授權(十一)

來源:互聯網
上載者:User

標籤:acm   nil   apr   oql   gpm   usb   cbe   class   eth   

 使用PermissionsAuthorizationFilter

在applicationContext-shiro.xml中配置url所對應的許可權。

測試流程:

1、在applicationContext-shiro.xml中配置filter規則

         <!--商品查詢需要商品查詢許可權  -->

   /items/queryItems.action = perms[item:query]

2、使用者在認證通過後,請求/items/queryItems.action

3、被PermissionsAuthorizationFilter攔截,發現需要“item:query”許可權

4、PermissionsAuthorizationFilter調用realm中的doGetAuthorizationInfo擷取資料庫中正確的許可權

5、PermissionsAuthorizationFilter對item:query 和從realm中擷取許可權進行對比,如果“item:query”在realm返回的許可權列表中,授權通過。

建立refuse.jsp

如果授權失敗,跳轉到refuse.jsp,需要在spring容器中配置:

 

Realm中進行授權
// 用於授權    @Override    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {        // 從 principals擷取主身份資訊        // 將getPrimaryPrincipal方法傳回值轉為真實身份類型(在上邊的doGetAuthenticationInfo認證通過填充到SimpleAuthenticationInfo中身份類型),        ActiveUser activeUser = (ActiveUser) principals.getPrimaryPrincipal();        // 根據身份資訊擷取許可權資訊        // 從資料庫擷取到許可權資料        List<SysPermission> permissionList = null;        try {            permissionList = sysService.findPermissionListByUserId(activeUser.getUserid());        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        // 單獨定一個集合對象        List<String> permissions = new ArrayList<String>();        if (permissionList != null) {            for (SysPermission sysPermission : permissionList) {                // 將資料庫中的許可權標籤 符放入集合                permissions.add(sysPermission.getPercode());            }        }        // 查到許可權資料,返回授權資訊(要包括 上邊的permissions)        SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();        // 將上邊查詢到授權資訊填充到simpleAuthorizationInfo對象中        simpleAuthorizationInfo.addStringPermissions(permissions);        return simpleAuthorizationInfo;    }

 

shiroWeb項目-授權(十一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.