[練習範例]spring security & JWT & Swagger

範例專案名稱 angular-11-spring-boot-jwt-authenticationExample

annotation

security

登入流程經過的所有事情
  • HttpSecurity http : 所有請求都會屬於他,就會要先通過security,而要經過哪些認證就可以接在http後面做設定。
  • cors() : 表示要使用CorsFilter,如果有自己設定一個名為corsFilter的bean,那麼就會使用自己設定的corsFilter,不然在corsConfigurationSource中已經有預設好了。參考
  • and() : 只是把method接在一起
  • csrf() :
    • 防止CSRF Attacks
    • 使用時機為當你有使用瀏覽器時,就建議使用
    • 做 token 驗證,不用開啟避免 csrf
    • 參考
  • exceptionHandling()
    • 通常會這樣使用HttpSecurity.exceptionHandling(),後面就可以再接你想要自己定義的例外處理邏輯,例如exceptionHandling().authenticationEntryPoint(自定義的邏輯)
    • 參考
  • sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
  • .antMatchers("/api/auth/**").permitAll().anyRequest().authenticated() 如果api網址如上的話,直接通過,不需驗證

swagger

一般

  • @Valid : 註釋在方法中要校驗的參數上,用於啟動校驗,可搭配BindingResult 物件獲取校驗失敗的訊息;也可以註釋在成員屬性上,用於進行嵌套驗證。
  • @Validated : 對於@Valid 的封裝,由Spring 提供的校驗機制,比@Valid 多了分組功能,但必須配合@Valid 才能進行嵌套驗證。
  • @Email : 被註釋的屬性必須是電子信箱格式。
  • @Pattern : 被註釋的屬性必須符合指定的正則表示法。
  • @Null : 被註釋的屬性必須為Null。
  • @NotNull : 被註釋的屬性必須不為Null。
  • @NotEmpty : 被註釋的字串不可為空。
  • @NotBlank : 被註釋的字串非null 且長度必須大於0。
  • @Length : 被註釋的字串長度必須在指定的範圍內。
  • @Min(value) : 被註釋的屬性必須為一個數字且大於或等於指定的最小值。
  • @Max(value) : 被註釋的屬性必須為一個數字且小於或等於指定的最大值。
  • @DecimalMin(value) : 被註釋的屬性必須為一個數字且大於或等於指定的最小值。
  • @DecimalMax(value) : 被註釋的屬性必須為一個數字且小於或等於指定的最大值。
  • @Size(max, min) : 被註釋的屬性必須為一個數字且在指定的範圍內。
  • @Digits(integer, fraction) : 被註釋的屬性必須為一個數字且在可接收的範圍內。
  • @Range : 被註釋的屬性必須在合適的範圍內。
  • @AssertTrue : 被註釋的屬性必須為一個布林值且為true。
  • @AssertFalse : 被註釋的屬性必須為一個布林值且為false。
  • @Past : 被註釋的屬性必須為一個過去的日期。
  • @Future : 被註釋的屬性必須為一個未來的日期。