使用tinyvalidator實現伺服器端驗證 -Yuri Mednikov
向您演示一個小的tinyvalidator庫,tinyvalidator庫是執行驗證流程的小型簡單解決方案,該庫可以在處理程式級別用於驗證輸入。
定義資料模型
驗證從所需資料及其引數的定義開始。tinyvalidator使用基於註釋的方法。
public class AuthRequest { @Email private String email; @Size(min = 8) private String password; // getters, setters } |
在此程式碼段中,我們使用了兩個註釋:@Email和@Size。第一個檢查欄位是否包含有效的電子郵件地址(儘管這適用於format。您需要實施電子郵件確認流程來檢查此電子郵件確實存在)。第二個斷言password字串的長度不小於8。
您的API中可能還需要使用許多其他有用的內建驗證器註釋:
- @NotNull –檢查欄位是否為空
- @HttpUrl –檢查欄位是否包含有效的網址
- @Pattern –接受與定義的常規表示式匹配的欄位
構建驗證流程的第二部分實際上是呼叫驗證器元件,該元件根據定義的規則對bean進行斷言:
public void login(Context context) { Validator validator = new Validator(); AuthRequest request = context.bodyAsClass(AuthRequest.class); List<ConstraintViolation> violations = validator.validate(request); if (!violations.isEmpty()) { String message = violations.stream() .map(v -> v.getName().concat(": ").concat(v.getMessage())) .collect(Collectors.joining(", ")); throw new BadRequestResponse(message); } AuthResponse result = service.login(request); context.json(result); } public void signup (Context context){ AuthRequest request = context.bodyAsClass(AuthRequest.class); Validator validator = new Validator(); List<ConstraintViolation> violations = validator.validate(request); if (!violations.isEmpty()) { String message = violations.stream() .map(v -> v.getName().concat(": ").concat(v.getMessage())) .collect(Collectors.joining(", ")); throw new BadRequestResponse(message); } AuthResponse result = service.signup(request); context.json(result); } |
首先,我們在該方法中需要建立一個新validator例項:
Validator validator = new Validator(); |
然後,我們需要將bean傳遞給驗證器。在我們的例子中,bean代表一個登入/註冊請求(AuthRequest實體):
List<ConstraintViolation> violations = validator.validate(request); |
這種方法基本上返回一個包含驗證不透過的Collection。如果bean有效,則此Collection為空。否則,我們將獲得沒有透過驗證的欄位。在這種情況下,我們需要中斷帶有BadRequest響應的處理程式流,然後是有關錯誤訊息。
您可以在github儲存庫中找到此文章的完整原始碼。
相關文章
- 使用Spring Reactive MongoDB進行自定義更新查詢 -Yuri MednikovSpringReactMongoDB
- 簡單幾步實現滑動驗證碼(後端驗證)後端
- 使用 Spring Validator 介面實現驗證Spring
- 使用WebService釋出soap介面,並實現客戶端的https驗證Web客戶端HTTP
- Laravel 與 jwt 多表(多使用者端)驗證隔離的實現LaravelJWT
- Web 端 實現 app “輸入驗證碼 ”的效果WebAPP
- PHP (Laravel) 實現 iOS 內購服務端驗證PHPLaraveliOS服務端
- golang 中使用 JWT 實現登入驗證GolangJWT
- easy-captcha實現驗證碼驗證APT
- 使用 Chapel 實現滑動驗證碼識別
- Django實現驗證碼Django
- 2.13.3 使用 Oracle Wallet 實現在DBCA中使用身份驗證Oracle
- node學習---jwt實現驗證使用者身份JWT
- Spring Boot 使用 JSR303 實現引數驗證Spring BootJS
- Spring Security 6中使用PKCE實現身份驗證Spring
- layui使用html+servlet+ajax實現登入驗證UIHTMLServlet
- 簡訊驗證實現方式
- lumen驗證類 實現控制器場景驗證
- TP6實現前後端分離的圖片驗證碼,驗證碼以介面形式返回後端
- Kubernetes 兩步驗證 - 使用 Serverless 實現動態准入控制Server
- 使用.Net Core實現的一個圖形驗證碼
- 使用 Seed7 實現滑動驗證碼識別
- 使用 ActionScript 實現簡單滑動驗證碼識別
- validation客戶端驗證框架使用手冊客戶端框架
- 用某語言API實現讓伺服器無密碼驗證API伺服器密碼
- 遠端伺服器連線(金鑰驗證,跳板機)伺服器
- Laravel 驗證類 實現 路由場景驗證 和 控制器場景驗證Laravel路由
- 基於使用者認證的前後端實現後端
- 使用IPMI工具實現對伺服器的遠端管理伺服器
- 使用 Testinfra 和 Ansible 驗證伺服器狀態伺服器
- 純CSS實現表單驗證CSS
- Rust中實現JWT身份驗證RustJWT
- KgCaptcha驗證碼實現筆記GCAPT筆記
- java圖形驗證碼實現Java
- 使用JWT做RESTful API的身份驗證-Go語言實現JWTRESTAPIGo
- 使用Fortran實現當前驗證碼自動化處理
- SSM專案使用攔截器實現登入驗證功能SSM
- javascript實現文字框標籤驗證JavaScript