§使用自訂驗證
驗證套件 validation package 允許您使用 verifying
方法建立臨時約束。不過,Play 提供您建立自訂約束的選項,使用 Constraint
案例類別。
在此,我們將實作一個簡單的密碼強度約束,使用正規表示法檢查密碼不是全部字母或全部數字。Constraint
採用一個傳回 ValidationResult
的函式,我們使用該函式傳回密碼檢查的結果
val allNumbers = """\d*""".r
val allLetters = """[A-Za-z]*""".r
val passwordCheckConstraint: Constraint[String] = Constraint("constraints.passwordcheck") { plainText =>
val errors = plainText match {
case allNumbers() => Seq(ValidationError("Password is all numbers"))
case allLetters() => Seq(ValidationError("Password is all letters"))
case _ => Nil
}
if (errors.isEmpty) {
Valid
} else {
Invalid(errors)
}
}
注意:這是一個故意簡單的範例。請考慮使用 OWASP 指南 進行適當的密碼安全性。
然後,我們可以將此約束與 Constraints.min
一起使用,以對密碼新增其他檢查。
val passwordCheck: Mapping[String] = nonEmptyText(minLength = 10)
.verifying(passwordCheckConstraint)
下一步:自訂欄位建構函式
在此文件發現錯誤?此頁面的原始碼可以在 這裡 找到。在閱讀 文件指南 後,請隨時提交拉取請求。有問題或建議要分享嗎?前往 我們的社群論壇 與社群展開對話。