1. 程式人生 > >Spring Security中html頁面設置hasRole無效的問題

Spring Security中html頁面設置hasRole無效的問題

權限 不支持 new min 發現 測試 -a sdn .get

Spring Security中html頁面設置hasRole無效的問題

一、前言

學了幾天的spring Security,偶然發現的hasRole和hasAnyAuthority的區別。當然,可能有更深入的我沒看到。現在把我實際的調試結果分享給大家

二、失效原因及解決

下面是部分示例html頁面代碼

  1. <div sec:authorize="hasRole(‘R_ADMIN‘)">
  2. <p class="bg-info">權限0001可見</p>
  3. </div>
  4. <div sec:authorize="hasRole(‘ROLE_MD‘)">
  5. <p class="bg-info">權限0002可見</p>
  6. </div>
  7. <div sec:authorize="hasAnyAuthority(‘R_ADMIN‘)">
  8. <p class="bg-info">權限0003可見</p>
  9. </div>
  10. <div sec:authorize="hasRole(‘ROLE_MD‘)">
  11. <p class="bg-info">權限0004可見</p>
  12. </div>
  13. <div sec:authorize="hasAnyAuthority(‘ADMIN‘)">
  14. <p class="bg-info">權限0005可見</p>
  15. </div>
  16. <div sec:authorize="hasRole(‘MD‘)">
  17. <p class="bg-info">權限0006可見</p>
  18. </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無效的問題