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

This commit is contained in:
2026-04-02 16:32:03 +08:00
parent ecfed9bf6b
commit 2786c8e7bf

View File

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