1. 程式人生 > 其它 >spring-boot-security元件總結補充

spring-boot-security元件總結補充

前言

spring-boot-security相關知識暫時告一段落,今天我們抽點時間做一次總結,也算是對最近幾天知識的回顧。

Security

補充內容

我們先說補充內容,在我們之前分享security元件有兩個知識點被我遺漏了,然後今天總結的時候才發現,所以今天我們在這裡補充下。這兩個知識點都是和配置類相關的,一個是登出的相關配置,一個是token的相關配置。

退出登入設定

先看登出配置,登出配置就是設定使用者退出登入相關頁面、介面地址、處理器等,和登入設定類似:

// 獲取登出設定物件 
.and().logout()
    // 設定登出地址
     .logoutUrl("/logout")
    // 設定登出成功後跳轉地址
     .logoutSuccessUrl("/logoutPage")
    // 設定退出成功後處理器
     .logoutSuccessHandler(syskeLogoutSuccessHandler)

這裡簡單解釋下:

  • logoutUrl設定的是退出登入的觸發地址,這個地址可以隨便指定,哪怕資源不存在也不影響;
  • logoutSuccessUrl設定的是退出登入成功後跳轉的頁面,如果你需要退出登入成功後返回一個頁面,那推薦你用這種方式,這時候返回的就是你指定的頁面
  • logoutSuccessHandler設定退出登入處理器,如果你需要返回json之類的資料,那可以用這種方式

但是logoutSuccessUrllogoutSuccessHandler只能設定一個,而且後面的會把前面的設定的覆蓋掉,所以你需要根據自己的需要選擇。

下面是我寫的退出登入成功處理器的實現:

@Component
public class SyskeLogoutSuccessHandler implements LogoutSuccessHandler {
    @Override
    public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
        // 登出成功後的相關操作
        System.out.println("退出登入成功");
        httpServletResponse.setContentType("application/json;charset=UTF-8");
        HashMap<String, Object> result = Maps.newHashMap();
        result.put("message", "退出登入成功");
        result.put("success", Boolean.TRUE);
        result.put("code", 2000);
        httpServletResponse.getWriter().write(JSON.toJSONString(result));
    }
}

說明:昨天我們說登入介面要放一個空介面,但是搞清楚logoutUrl的地址之後,我想loginProcessingUrl應該也是這也,所以又去試了下,發現確實一樣,登入介面是可以隨意指定的,看來昨天可能是配置的問題。

token相關配置

token的相關設定今天又實際搞了下,暫時還沒理清楚實際應用場景,而且設定的引數也沒有任何效果,所以今天就先不分享,後續搞清楚了再來分享。

內容總結

和上次執行緒池總結一樣,我們先貼一張腦圖(公眾號回覆【spring-boot-security】獲取腦圖原始檔),今天的總結內容有就是圍繞腦圖展開。

security元件的核心內容基本上就是我們這幾天分享的知識點,主要以security

配置為主,包括配置元件的自定義、常用的配置項等,另外security還對第三方安全框架做了支援,比如oauth2openidsaml2,好像目前就支援這三種,不過這三種已經算是比較流行的安全框架了。

以下就是我們security相關的知識點,獲取腦圖公眾號回覆【spring-boot-security】獲取腦圖原始檔即可。

配置類
  • 常用配置方法
    • configure(AuthenticationManagerBuilder auth):配置登入認證處理
    • configure(HttpSecurity http):配置資源許可權、登入頁面等
    • configure(WebSecurity web):WebSecurityConfigurerAdapter
資源鑑權設定
  • authorizeRequests:獲取資源許可權設定物件
  • antMatchers:設定訪問資源表示式
  • hasAnyRole:配置資源的訪問角色
  • hasAnyAuthority:配置資源的訪問許可權
  • anyRequest:除配置許可權資源外的其他資源
  • permitAll:設定指定資源的訪問許可權為無條件訪問
  • anonymous:設定允許匿名訪問
登入配置
  • formLogin:獲取登入頁設定物件
  • loginPage:設定登入頁
  • loginProcessingUrl:設定登入處理介面
  • 登入成功
    • successHandler:設定登入成功處理器
    • successForwardUrl:設定登入成功跳轉頁面
    • defaultSuccessUrl:設定登入成功預設頁面
  • 登入失敗
    • failureForwardUrl:設定登入失敗跳轉頁面
    • failureHandler:設定登入失敗處理器
登出配置
  • logout:獲取登出設定物件
  • logoutUrl:設定登出介面地址
  • logoutSuccessHandler:設定登出成功處理器
  • logoutRequestMatcher:設定登出匹配地址(訪問設定的地址,就會觸犯登出操作)
  • addLogoutHandler:新增登出處理器
  • defaultLogoutSuccessHandlerFor:設定登出成功處理器、登出匹配地址
  • deleteCookies:設定是否刪除cookie
token相關配置
  • tokenValiditySeconds:設定token過期時間
  • tokenRepository:設定token處理器(生成、刪除、更新)
其他配置
  • userDetailsService:設定使用者資料獲取服務
  • httpBasic:啟用http基本校驗
  • csrf:設定跨越訪問校驗
元件依賴
  • spring-boot-starter-security
擴充套件
  • oauth2
  • openid
  • saml2
元件
  • 登入認證處理器:AuthenticationProvider
  • 登入結果處理器:
    • AuthenticationFailureHandler
    • AuthenticationSuccessHandler
  • 登出處理器
    • LogoutSuccessHandler
    • LogoutHandler
  • token元件:PersistentTokenRepository
  • 使用者資訊元件:UserDetailsService
  • 密碼加密器:PasswordEncoder

前期知識點回顧

總結

截止到今天,security相關的基礎知識我們就算講完了,雖然好多知識也沒講(第三方安全框架整合、token等),但是也算是把security的一些基礎知識講的差不多了,而且在一些細節問題的探討和研究上(比如登入、登出等配置),我應該講的算比較細了,當然從我的角度來說,經過這幾天的梳理和摸索,我基本上把securtiy的整個使用流程搞清楚了(說到這裡,我發現我忘記畫流程圖了),至少在security使用方面不會有太大問題,總之我是有收穫的。

最後我希望這幾天的內容能夠真正幫助到大家,週末愉快呀!