我在这里关注了文档
https://laravel.com/docs/5.8/validation#form-request-validation
我创建了一个自定义请求StoreName
php artisan make:request StoreName
然后添加了以下验证规则:
public function rules()
{
return [
'name' => 'required|max:255|min:4'
];
}
然后按照说明文件的类型在我的控制器中提示
public function store(StoreName $request)
{
$validated = $request->validated();
}
但是,当我向该端点发送发布请求时,我从Laravel返回了403
。当我删除StoreName自定义验证并简单地键入标准Laravel Illuminate\Http\Request
时,请求就可以正常工作(显然是在删除validated()方法之后)。
因此403来自我的自定义验证请求,我不知道为什么吗?我已经检查了StoreName.php文件的文件权限,它们与项目中的所有其他文件相同。
我在开发服务器上使用php artisan serve
,因此也没有时髦的Apache / Nginx配置覆盖任何内容。当应用自定义验证请求时,所有其他端点都与该端点分开工作。
可能是什么问题?
编辑:
可能值得注意的是,我也没有更改Laravel在新的自定义请求验证中生成的默认authorize()方法:
public function authorize()
{
return false;
}
答案 0 :(得分:4)
在“自定义”请求类中,您具有如下方法:
public function authorize()
{
return true; // this is false by default which means unauthorized 403
}
答案 1 :(得分:0)
public function authorize()
{
return false;
}
根据您的请求将 false 更改为 true
public function authorize()
{
return true;
}