首页 > 解决方案 > Laravel 403 禁止自定义请求验证

问题描述

我在这里关注了文档:

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

但是,当我向这个端点发送一个 post 请求时,我403从 Laravel 返回了一个。当我删除 StoreName 自定义验证并简单地键入标准 LaravelIlluminate\Http\Request时,请求工作正常(显然删除了 valid() 方法之后)。

所以 403 来自我的自定义验证请求,我不知道为什么?我检查了 StoreName.php 文件的文件权限,它们与项目中的所有其他文件相同。

我正在使用php artisan serve我的开发服务器,所以也没有时髦的 Apache/Nginx 配置覆盖东西。应用自定义验证请求时,除此之外的所有其他端点都可以工作。

问题可能是什么?


编辑:

可能值得注意的是,我没有更改 Laravel 在新的自定义请求验证中生成的默认 authorize() 方法:

public function authorize()
{
    return false;
}

标签: phplaravel

解决方案


在您的自定义请求类中,您有一个这样的方法:

public function authorize()
{
    return true; // this is false by default which means unauthorized 403
}

推荐阅读