优化:调整注册/登录时的用户名长度验证,采用实际显示宽度(英文占1宽度,汉字占2宽度),限制最短4个字母(或2个汉字)

This commit is contained in:
2026-04-02 16:32:03 +08:00
parent ecfed9bf6b
commit 2786c8e7bf
+9 -4
View File
@@ -33,8 +33,15 @@ class LoginRequest extends FormRequest
'username' => [ 'username' => [
'required', 'required',
'string', 'string',
'min:2', function ($attribute, $value, $fail) {
'max:12', $width = mb_strwidth($value, 'UTF-8');
if ($width < 4) {
$fail('用户名长度不得少于 4 个英文字母(或 2 个汉字)。');
}
if ($width > 12) {
$fail('用户名长度不得超过 12 个英文字母(或 6 个汉字)。');
}
},
// 允许中英文数字及常见符号,但严格过滤可能引起XSS/SQL注入的危险字符:< > ' " // 允许中英文数字及常见符号,但严格过滤可能引起XSS/SQL注入的危险字符:< > ' "
'regex:/^[^<>\'"]+$/u', 'regex:/^[^<>\'"]+$/u',
], ],
@@ -53,8 +60,6 @@ class LoginRequest extends FormRequest
{ {
return [ return [
'username.required' => '必须填写用户名。', 'username.required' => '必须填写用户名。',
'username.min' => '用户名长度不得少于 2 个字符。',
'username.max' => '用户名长度不得超过 12 个字符。',
'username.regex' => '用户名包含非法字符(不允许使用尖括号或引号)。', 'username.regex' => '用户名包含非法字符(不允许使用尖括号或引号)。',
'password.required' => '必须填写密码。', 'password.required' => '必须填写密码。',
'password.min' => '密码长度不得少于 1 个字符。', 'password.min' => '密码长度不得少于 1 个字符。',