chapter09_保護Web應用_2_保護視圖

  • 之前的種種操作都是為了不要讓某些沒有權限的用戶看到某個頁面,接下來要做的是這些用戶能看到頁面,但是看不到頁面的全部。即,頁面中的某些部分根據(jù)用戶有無權限決定是否渲染

  • JSP的視圖保護方案

    (1) 聲明

    <%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %>

    (2) 標簽

    <security:authentication> 用戶渲染當前用戶認證對象的詳細信息

    <security:authorize> 如果用戶被授予了特定權限或spEL表達式計算結(jié)果為true,則渲染其中的內(nèi)容

    (3) 訪問認證信息的細節(jié)

    需求:你好,xxx同學!

    示例

      Hello there...<security:authentication property="principal.username"/>
    

    其中,property屬性用來表示用戶認證對象的一個屬性

    (4) 條件性的渲染內(nèi)容

    需求:根據(jù)用戶權限決定是否渲染內(nèi)容

    示例

      <security:authorize access="hasRole('ROLE_USER')">
    
          <div>
              fuck!
          </div>
    
      </security:authorize>
    

    其中,access屬性被賦值為一個SpEL表達式,表達式的值為真的時候則渲染;而且可以使用and連接多個條件

  • Thymeleaf的視圖保護方案

    (1) 注冊"方言",之后才能使用

    示例 WebConfig.java

      @Configuration
      @EnableWebMvc
      @ComponentScan("spittr.web")
      public class WebConfig extends WebMvcConfigurerAdapter {
    
          ...
    
          @Bean
          public SpringTemplateEngine templateEngine(TemplateResolver templateResolver) {
    
              SpringTemplateEngine templateEngine = new SpringTemplateEngine();
              templateEngine.setTemplateResolver(templateResolver);
              
              templateEngine.addDialect(new SpringSecurityDialect());
    
              return templateEngine;
          }
    
          ...
      }
    

    (2) 在html中聲明命名空間

      <html xmlns="http://www.w3.org/1999/xhtml"
            xmlns:th="http://www.thymeleaf.org"
            xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
    

    (3) 訪問認證信息的細節(jié)

      sec:authentication 等價于JSP的 <security:authentication>
    

    示例

      Hello there...<span sec:authentication="name">user-name</span>
    

    (4) 條件性的渲染內(nèi)容

    sec:authorize 等價于JSP的 <security:authorize access="xxx">

    示例

      <div sec:authorize="isAuthenticated()">
    
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容