Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

再也不用擔心後台寫一坨if else了!推薦一款參數校驗神器

2020 年 1 月 8 日 老男孩的成长之路

來源:小柒2012

前言

參數如何校驗?撸主很久之前的項目都是在前端頁面一個個 if else 的,後來就用了一系列的前端校驗框架,比如 layui iview 等等,幾個樣式屬性就可以輕松搞定,的確是美滋滋。

後端驗證

那麽問題來了?前端已經驗證了,後端還有必要再校驗嗎?

如果非要有個結果,答案只能是不安全的,雖然客戶端自己對自己已經做了驗證,但是不能避免一些惡意用戶人爲的修改表單直接發送欺騙請求。

所以說,從安全的角度來說,單純的依靠前端驗證,是不安全的,任何健壯的系統都必須在後端進行驗證。

當然,你也不必擔心後台再寫一坨if else,這裏推薦大家一款參數校驗神器 Hibernate-Validator。SpringBoot的標配JPA是自帶的,小夥伴們直接使用即可。

注解

基本提供了常用的校驗注解,如果不滿足業務,可以通過@Pattern自行定義正則表達式。

@Null  被注釋的元素必須爲null
@NotNull  被注釋的元素不能爲null
@AssertTrue  被注釋的元素必須爲true
@AssertFalse  被注釋的元素必須爲false
@Min(value)  被注釋的元素必須是一個數字,其值必須大于等于指定的最小值
@Max(value)  被注釋的元素必須是一個數字,其值必須小于等于指定的最大值
@DecimalMin(value)  被注釋的元素必須是一個數字,其值必須大于等于指定的最小值
@DecimalMax(value)  被注釋的元素必須是一個數字,其值必須小于等于指定的最大值
@Size(max,min)  被注釋的元素的大小必須在指定的範圍內。
@Digits(integer,fraction)  被注釋的元素必須是一個數字,其值必須在可接受的範圍內
@Past  被注釋的元素必須是一個過去的日期
@Future  被注釋的元素必須是一個將來的日期
@Pattern(value) 被注釋的元素必須符合指定的正則表達式。
@Email 被注釋的元素必須是電子郵件地址
@Length 被注釋的字符串的大小必須在指定的範圍內
@NotEmpty  被注釋的字符串必須非空
@Range  被注釋的元素必須在合適的範圍內

案例

這裏以用戶注冊爲例:

再也不用擔心後台寫一坨if else了!推薦一款參數校驗神器

@Data
@Entity
@Table(name = "sys_user")
public class SysUser implements Serializable{
   /**
    * 用戶id
    */ 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id", nullable = false, length = 20)
    private Long userId;

   /**
    * 用戶名
    */
    @NotNull
    @Column(name = "username", nullable = false, length = 50)
    private String username;

   /**
    * 密碼
    */
    @Size(min = 6, max = 25, message = "密碼長度要求6到25之間")
    @Column(name = "password", nullable = false, length = 50)
    private String password;

   /**
    * 姓名(昵稱)
    */ 
    @NotNull
    @Column(name = "nickname", length = 50)
    private String nickname;

   /**
    * 郵箱
    */
    @Email(message="郵箱格式不正確")
    @Column(name = "email", length = 100)
    private String email;

   /**
    * 手機號
    */
    @Pattern(regexp="^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(17[013678])|(18[0,5-9]))\\d{8}$",message="手機格式不正確")
    @Column(name = "mobile", length = 100)
    private String mobile;
   /**
    * 狀態 0:禁用,1:正常
    */ 
    @Column(name = "status", length = 4)
    private Short status;

   /**
    * 備注
    */ 
    @Column(name = "remark", length = 500)
    private String remark;

   /**
    * 創建用戶id
    */ 
    @Column(name = "user_id_create")
    private Long userIdCreate;

   /**
    * 創建時間
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "gmt_create")
    private Timestamp gmtCreate;

   /**
    * 修改時間
    */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Column(name = "gmt_modified")
    private Timestamp gmtModified;
}

小結

是不是很爽,再也不用 if else了,當然後台還沒校驗的另說。最後還是建議各位小夥伴,把安全校驗做充分,省的以後前後端扯皮,最重要的是避免背鍋!!!

再也不用擔心後台寫一坨if else了!推薦一款參數校驗神器

關注我,後續更多幹貨奉上

相關文章:

  • 阿裏一面面經詳解:kafka消息重複消費場景,你怎麽看待996?
  • 訴說阿裏一面經曆:技術個人主見相結合的面試,996你如何看待?
  • Mysql 寒假刷題TIPs
  • 正則表達式在Java中的使用
  • 在夏日的新加坡,送你一篇近40年前的英國冬遊記
  • Spring中Bean的生命周期(上)
科技

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2025 快讀 | 服務協議 | DMCA | 聯繫我們