フォームデータの検証
node.js を使用してログイン登録インターフェイスを作成する場合、非常に便利なフォーム検証が使用されました。
1. @hapi/joi パッケージをインストールします。このパッケージは、フォームに含まれる各データ項目の検証ルールを定義します。
npm install @hapi/joi@17.1.0
2. フォームデータの自動検証機能を実現するミドルウェア@escook/express-joiをインストールします。
npm i @escook/express-joi
3. 部分検証ルール
- string() 値は文字列である必要があります
- alphanum() 値には、a-zA-Z を含む文字列のみを指定できます。
- min(len)最小長
- max(len)最大長
- required() 値は必須であり、未定義にすることはできません
- パターン (正規表現) の値は、正規表現の規則に従う必要があります。
4. ユーザー情報検証ルールモジュール
// 导入验证规则包
const joi = require('@hapi/joi')
// 用户名的验证规则
const username = joi.string().alphanum().min(3).max(12).required()
// 密码的验证规则
const password = joi
.string()
.pattern(/^[\S]{6,8}$/)
.required()
// 注册和登录表单的验证规则对象
exports.schema = {
// 表示需要对 req.body 中的数据进行验证
body: {
username,
password,
},
}
5. ルーティング対応情報の変更
// 1. 导入验证表单数据的中间件
const expressJoi = require('@escook/express-joi')
// 2. 导入需要的验证规则对象
const {
schema } = require('../schema/user')
router.post('/register', expressJoi(schema), userHandler.register)
ユーザー名が正常に検証されました
パスワードが正常に検証されました
6. キャプチャデータの検証に失敗しました
// 导入验证规则包
const joi = require('@hapi/joi')
// 错误中间件
app.use(function (err, req, res, next) {
// 数据验证失败
if (err instanceof joi.ValidationError) return res.send(err)
// 未知错误
res.send(err)
})
たとえば、ログインに失敗した場合、
上記はフォーム認証に便利な方法です~