v0.1.0
This commit is contained in:
56
middleware/validation.js
Normal file
56
middleware/validation.js
Normal file
@ -0,0 +1,56 @@
|
||||
const { body, validationResult } = require('express-validator');
|
||||
|
||||
// 注册验证规则
|
||||
const registerValidation = [
|
||||
body('username')
|
||||
.isLength({ min: 3, max: 50 })
|
||||
.withMessage('用户名长度必须在3-50个字符之间')
|
||||
.matches(/^[a-zA-Z0-9_]+$/)
|
||||
.withMessage('用户名只能包含字母、数字和下划线'),
|
||||
|
||||
body('email')
|
||||
.isEmail()
|
||||
.withMessage('请输入有效的邮箱地址')
|
||||
.normalizeEmail(),
|
||||
|
||||
body('password')
|
||||
.isLength({ min: 6 })
|
||||
.withMessage('密码长度至少6个字符')
|
||||
.matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)/)
|
||||
.withMessage('密码必须包含至少一个小写字母、一个大写字母和一个数字')
|
||||
];
|
||||
|
||||
// 登录验证规则
|
||||
const loginValidation = [
|
||||
body('username')
|
||||
.notEmpty()
|
||||
.withMessage('用户名不能为空'),
|
||||
|
||||
body('password')
|
||||
.notEmpty()
|
||||
.withMessage('密码不能为空')
|
||||
];
|
||||
|
||||
// 验证结果处理中间件
|
||||
const handleValidationErrors = (req, res, next) => {
|
||||
const errors = validationResult(req);
|
||||
// console.log(req.body);
|
||||
|
||||
if (!errors.isEmpty()) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: '输入验证失败',
|
||||
errors: errors.array().map(error => ({
|
||||
field: error.path,
|
||||
message: error.msg
|
||||
}))
|
||||
});
|
||||
}
|
||||
next();
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
registerValidation,
|
||||
loginValidation,
|
||||
handleValidationErrors
|
||||
};
|
Reference in New Issue
Block a user