Spring Security基本配置方法解析

這篇文章主要介紹了Spring Security基本配置方法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Spring Security 是一個功能強大且可高度自定義的身份驗證和訪問控制框架。 它是保護基於Spring的應用程序的事實上的標準。
Spring Security 是一個專注於爲Java應用程序提供身份驗證和授權的框架。 與所有Spring項目一樣,Spring Security的真正強大之處在於它可以輕鬆擴展以滿足自定義要求

先建立一個maven多模塊工程,如下:

  • spring-security:父模塊
  • spring-security-browser:處理瀏覽器相關的授權認證,最終作爲demo的一個jar依賴
  • spring-security-core:一些授權認證的公共方法和類,並將公共依賴放在這裏
  • spring-security-demo:授權認證demo服務

spring-security-core

pom依賴:

<!-- 工具類包 -->
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.7</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
      <version>4.1</version>
    </dependency>
    <dependency>
      <groupId>commons-beanutils</groupId>
      <artifactId>commons-beanutils</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.6</version>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
      <!-- thymeleaf-視圖解析 -->
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>

spring-security-browser

pom依賴:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>com.xwj</groupId>
      <artifactId>spring-security-core</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>

Security配置:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
  protected void configure(HttpSecurity http) throws Exception {
    http.formLogin() // 表單登錄。跳轉到security默認的登錄表單頁
    // http.httpBasic() //basic登錄
    .and()
    .authorizeRequests() // 對請求授權
    .antMatchers("/noAuth").permitAll() //允許所有人訪問/noAuth
    .anyRequest() // 任何請求
    .authenticated()// 需要身份認證
    ; 
  }
}

spring-security-demo

pom依賴:

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
     <dependency>
      <groupId>com.xwj</groupId>
      <artifactId>spring-security-browser</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>

Controller中:

@RestController
@RequestMapping
public class IndexController {
  /**
   * 不需要認證的請求
   */
  @GetMapping("/noAuth")
  public String noAuth() {
    return "noAuth";
  }
  /**
   * 需要認證的請求
   */
  @GetMapping("/user")
  public String user() {
    return "user";
  }
}

啓動服務。在日誌中,可以看到如下信息:

Using default security password: 90d9e73a-490c-484b-b7c5-5cd75c634e2f

這是security的默認密碼,在後面登錄時會用到

該服務端口爲18081,在瀏覽器訪問 http://localhost:18081/noAuth,該請求是不需要認證的,所以直接進入到我們的服務,如下:

再訪問 http://localhost:18081/user,該請求是需要認證的,會先跳到security默認的登錄頁(也可以自定義登錄頁),如下:

用戶名隨便輸入,密碼爲日誌中打印的密碼:90d9e73a-490c-484b-b7c5-5cd75c634e2f

點擊login按鈕,登錄成功,返回一個user。當重新訪問這個請求時,由於已經認證過了,所以現在可以直接訪問了

至此,最簡單的security配置完成~

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持神馬文庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章