Laravel 403禁止自定义请求验证

时间:2019-05-21 09:38:17

标签: php laravel

我在这里关注了文档

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;
}

2 个答案:

答案 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;
}