1. 程式人生 > >關於Apache shiro許可權控制學習小結

關於Apache shiro許可權控制學習小結

第一種:URL 級別粗粒度許可權控制

配置 web.xml 的 shiroFilter 攔截 /*

在 spring 的 applicationContext*.xml 配置檔案中配置同名 bean,配置 filterChainDefinitions 攔截控制規則

xxx.html* = anon (未登入可以訪問)

xxx.html* =authc (必須登入才能訪問 )

xxx.html* = perms[許可權] (需要特定許可權才能訪問)

xxx.html* = roles[角色] (需要特定角色才能訪問 )

第二種: 方法級別細粒度許可權控制

在 spring 的 applicationContext*.xml 配置 spring aop 對 spring 管理 bean 物件開啟 shiro 註解支援

@RequiresPermissions(許可權) 需要特定許可權才能訪問

@RequiresRoles(角色) 需要特定角色才能訪問

@RequiresAuthentication 需要認證才能訪問

第三種:通過 shiro 自定義標籤,實現頁面元素顯示控制

登入後才能訪問 <shiro:authenticted>

需要特定許可權才能訪問 <shiro:hasPermission name="xxx">

需要特定角色才能訪問 <shiro:hasRole name="xxx">

第四種:在程式中通過程式碼 判斷使用者是否具有指定許可權( 不太常用 )

1.角色授權實現

Subject currentUser = SecurityUtils.getSubject();

if(currentUser.hasRole("xxx")){

//填寫擁有該角色的處理邏輯

}else{

//無該角色的處理邏輯

}

2.資源授權實現

if(currentUser.isPermitted("permission:xxx")){

//填寫擁有該許可權的處理邏輯

}else{

//無該許可權的處理邏輯

}