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

前言

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

後端驗證

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

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

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

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

註解

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

<code>@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 被註釋的元素必須在合適的範圍內
/<code>

案例

這裡以用戶註冊為例:

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

<code>@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;
}
/<code>

小結

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

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

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


分享到:


相關文章: