Spring Security中html頁面設置hasRole無效的問題
阿新 • • 發佈:2019-04-09
權限 不支持 new min 發現 測試 -a sdn .get
Spring Security中html頁面設置hasRole無效的問題
一、前言
學了幾天的spring Security,偶然發現的hasRole和hasAnyAuthority的區別。當然,可能有更深入的我沒看到。現在把我實際的調試結果分享給大家
二、失效原因及解決
下面是部分示例html頁面代碼
- <div sec:authorize="hasRole(‘R_ADMIN‘)">
- <p class="bg-info">權限0001可見</p>
-
</div>
- <div sec:authorize="hasRole(‘ROLE_MD‘)">
- <p class="bg-info">權限0002可見</p>
- </div>
- <div sec:authorize="hasAnyAuthority(‘R_ADMIN‘)">
- <p class="bg-info">權限0003可見</p>
- </div>
-
<div sec:authorize="hasRole(‘ROLE_MD‘)">
- <p class="bg-info">權限0004可見</p>
- </div>
- <div sec:authorize="hasAnyAuthority(‘ADMIN‘)">
- <p class="bg-info">權限0005可見</p>
- </div>
- <div sec:authorize="hasRole(‘MD‘)">
-
<p class="bg-info">權限0006可見</p>
- </div>
實際測試發現以下兩點。
第一、在html頁面中如果要使用hasRole去設置權限,那麽必須是以ROLE_開頭的角色。而hasAnyAuthority則不存在這個問題。查了一下官方文檔並沒有什麽有用的東西。如果各位同學查到可以留言補充
再次調試發現第二點
第二、在html頁面中使用hasRole時可以省略掉ROLE_部分,只在後端放入角色的時候前面加上ROLE_即可,而hasAnyAuthority不支持這麽做。即當一個角色名是ROLE_MD的用戶登錄時,她能看到2、4、6;所以在權限的放入時,比如:auths.add(new SimpleGrantedAuthority(role.getRoleCode()));可以在前面加個ROLE_,html頁面仍然寫原來的角色名就行。
2019-04-0919:44:51
Spring Security中html頁面設置hasRole無效的問題