日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spingboot下shiro自定义过滤器roles

發(fā)布時間:2024/7/23 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spingboot下shiro自定义过滤器roles 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

shiro默認的roles過濾,是與的關(guān)系,就是你的用戶得有roles對應(yīng)的所有角色,才算有權(quán)限。
但是實際開發(fā)過程中,更多的是或的需求,只要用戶滿足roles中的一個角色,就算有權(quán)限。
所以就涉及到重寫過濾器roles,如下:

/*** 自定義過濾器覆蓋默認,且轉(zhuǎn)或*/ public class RoleFilter extends AuthorizationFilter {@Overrideprotected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse servletResponse, Object mappedValue) throws Exception {String[] arra = (String[]) mappedValue;if (arra == null || arra.length == 0) {//沒有角色限制,有權(quán)限訪問return true;}Subject subject = getSubject(servletRequest, servletResponse);for (String role : arra) {if (subject.hasRole(role)) {//或return true;}}return false;} }

寫完這個類,再將他放在配置類的ShiroFilterFactoryBean的Filters中即可,如下:

@Beanpublic ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();shiroFilterFactoryBean.setSecurityManager(securityManager);Map<String, Filter> filtersMap = new LinkedHashMap<String, Filter>();//自定義攔截器filtersMap.put("roles", roleFilter());shiroFilterFactoryBean.setFilters(filtersMap);Map<String, String> filterChainDefinitionMap = Maps.newLinkedHashMap();filterChainDefinitionMap.put("/user/**","roles[user,leader]");//其他資源權(quán)限shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);return shiroFilterFactoryBean; 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的spingboot下shiro自定义过滤器roles的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。