<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Spring Security 簡介及其設置 > [https://javatutorial.net/introduction-to-spring-security-and-how-to-to-set-up](https://javatutorial.net/introduction-to-spring-security-and-how-to-set-it-up) 在本教程中,您將學習如何使用 Spring Security 來保護 Web 應用程序的安全,包括用戶身份驗證,授權等。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) ## Spring Security 簡介 Spring Security 是一個可定制的身份驗證框架。 在保護基于 Spring 的應用程序時,這是標準。 它提供身份驗證和授權。 授權也稱為“訪問控制”。 ## Spring Security 的核心構建塊 1. `SecurityContextHolder`:將當前[`SecurityContext`](https://docs.spring.io/spring-security/site/docs/4.2.6.RELEASE/apidocs/org/springframework/security/core/context/SecurityContext.html)與當前執行線程相關聯。 它包含當前正在與應用程序交互的`SecurityContext`的信息。 安全上下文信息存儲在`ThreadLocal`對象中,該對象可用于當前線程中運行的所有成員。 2. `SecurityContext`:接口,用于定義與當前執行線程關聯的最小安全信息。 換句話說,它包含身份驗證對象和特定于請求的安全性信息。 3. 身份驗證:表示身份驗證請求所需的令牌。 一旦請求通過身份驗證,令牌通常將存儲在由`SecurityContextHolder`管理的線程本地`SecurityContext`中。 用戶身份驗證之后,將使用`UserDetails`對象構建`Authentication`對象,然后將其存儲在`SecurityContextHolder`中。 4. `UserDetails`:提供有關用戶的核心信息。 5. `UserDetailsS??ervice`:加載特定的用戶數據。 它是一個接口,允許從數據庫加載與用戶相關的信息。 該接口僅需要一種只讀方法,從而簡化了對新數據訪問策略的支持。 6. `GrantedAuthority`:通常由`UserDetailsS??ervice`加載。 表示授予身份驗證對象的權限。 ## 認證方式 身份驗證(如前所述)表示與應用程序交互的主體信息(用戶,設備,外部系統等)。 處理用戶身份驗證時,將從傳入請求中檢索用戶名和密碼,然后將其作為`UsernamePasswordAuthenticationToken`的實例。 然后將此令牌傳遞給`AuthenticationManager`,該管理器針對數據庫中的主體身份驗證主體身份。 如果身份驗證成功,則`AuthenticationManager`返回存儲主體詳細信息的身份驗證對象。 最后,在`SecurityContextHolder`方法的幫助下,將身份驗證對象填充到安全上下文中。 讓我們看一下`AuthenticationManager`界面的外觀: ```java public interface AuthenticationManager { Authentication authenticate(Authentication authentication) throws AuthenticationException; } ``` 如您所見,它只有一種方法。 但是,這一方法可以用來完成三件事: 1. 返回身份驗證(請參閱上面的文本) 2. 拋出`AuthenticationException` 3. 返回`null` `AuthenticationManager`通常用作`ProviderManager`的實現,然后將其委派給[`AuthenticationProvider`](https://spring.io/guides/topicals/spring-security-architecture/)實例鏈。`AuthenticationProvider`與`AuthenticationManager`非常相似,只是它有另外一種方法: ```java public interface AuthenticationProvider { Authentication authenticate(Authentication authentication) throws AuthenticationException; boolean supports(Class<?> authentication); } ``` ![Security ProviderManager AuthenticationProvider architecture illustration](https://img.kancloud.cn/fd/58/fd5869531c1afbeef239129a6d809eb5_1169x460.jpg) ## 授權書 授權的工作是確定是否允許用戶訪問給定的資源,換句話說,是否具有許可權。 在此階段,Spring 為我們提供了授權組件,稱為 [`AccessDecisionManager`](https://docs.spring.io/spring-security/site/docs/4.2.4.RELEASE/apidocs/org/springframework/security/access/AccessDecisionManager.html)。 這對我們有幫助,是為我們提供了 API。 多虧了 AOP,我們可以實現授權。 AOP 決定是否允許調用該方法的用戶進行方法調用。 ## 如何在 Spring 應用程序中設置 Spring Security 在 Maven `pom.xml`文件中,粘貼以下內容: ```java <dependencies> <dependency> <groupId>org.springframework.security</groupId> <artifcatId>spring-security-web</artifactId> <version>4.2.3</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>4.2.3</version> </dependency> </dependencies> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看