4 回答
TA贡献1712条经验 获得超3个赞
转到 RegisterController.php。
将有一个 validator(array $data) 函数来验证您的注册输入。
为名称字段添加 not_in 验证检查。
是这样的:
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255', 'not_in:admin,operator'],
'pan' => ['required', 'string', 'min:10', 'max:10', 'unique:users,username'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
希望这会有所帮助。
TA贡献1835条经验 获得超7个赞
这是我在 Laravel 9 中使用 Breeze 脚手架所做的。
我用保留的用户名创建了一个单独的“服务”特性,这样我就可以轻松地实现和扩展它。
创建一个
Services
文件夹在app/Services
Reserved
在以下位置创建特征app/Services/Reserved.php
保留.php
<?php
namespace App\Services;
trait Reserved
{
public static function usernames()
{
return ['admin', 'operator', 'someBadWord'];
}
}
接下来打开app/Http/Controllers/Auth/RegisteredUserController.php并导入特征,然后添加它。
现在只需使用规则将其添加到您的验证规则中notIn。
Rule::notIn(Reserved::usernames())
注册用户控制器.php
use Illuminate\Validation\Rule;
use App\Services\Reserved;
class RegisteredUserController extends Controller
{
use Reserved;
...
public function store(Request $request)
{
$request->validate([
'username' => ['required', 'string', 'max:16', 'unique:users', Rule::notIn(Reserved::usernames())],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'confirmed', Rules\Password::defaults()],
]);
...
}
}
TA贡献2051条经验 获得超10个赞
您可以尝试验证请求的名称是否不在预定义的阻止名称列表中:
use Illuminate\Validation\Rule;
Validator::make($data, [
'toppings' => [
'required',
Rule::notIn(['admin', 'superuser']),//etc..
],
]);
TA贡献1817条经验 获得超14个赞
使用以下命令创建 RegisterControllerRequest:
php artisan make:request RegisterControllerRequest
在 中找到您最近创建的文件app/Http/Requests,然后更新rules()为:
public function rules()
{
return [
'name' => 'required|notIn:admin,operator',
];
}
然后更新您的控制器以使用新的验证:
在命名空间后添加:
use App\Http\Requests\RegisterControllerRequest;
最后将验证作为参数注入到您的注册方法中:
public function register (RegisterControllerRequest $request)
- 4 回答
- 0 关注
- 149 浏览
添加回答
举报