Laravel 5.8 验证在使用 Passport 失败后返回首页

Posted

技术标签:

【中文标题】Laravel 5.8 验证在使用 Passport 失败后返回首页【英文标题】:Laravel 5.8 validation return to home after it fails while using Passport 【发布时间】:2019-11-16 20:38:57 【问题描述】:

我有一个 store() 方法。

public function create(StorePost $request)

    $post = Post::create([
        'title' => $request->title,
        'description' => $request->description,
    ]);

    return response()->json([
        'post' => $post
    ], 201);

在我的 StorePost 类中,我验证了请求。

public function rules()

    return [
        'title' => 'required|string|max:255',
        'description' => 'required',
    ];

当我用 Postman 测试它时输入错误的条目,例如,如果我用空值填充“描述”,它会返回主页而没有任何响应或错误。如何检索验证错误?

【问题讨论】:

【参考方案1】:

我只是通过在我的请求标头中添加 'Accept': 'application/json' 来解决它。

【讨论】:

【参考方案2】:

这是因为 Laravel 表单请求适用于 API 和非 API 请求。

根据表单发出的请求,它将重定向回(如果不是从表单发送,则返回原始表单 url 或主页),并在视图可用的 $errors 变量上带有错误包。

通过 ajax 发出的请求(通常在 API 上)通常具有标头 Accept: application/json,因此 Laravel 会自动知道您希望将验证错误包作为响应正文上的 json 而不是对 API 没有意义的重定向。

希望这可以让你明白这一点。

【讨论】:

以上是关于Laravel 5.8 验证在使用 Passport 失败后返回首页的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 5.8 或 6 中制作通用自定义包进行身份验证。*

Laravel 5.8 验证竞争条件

Laravel 5.8 验证 - 始终遵守任何规则

请求的身份验证范围不足。使用谷歌日历和 laravel 5.8

在 Laravel 5.8 中以用户身份管理员登录

Laravel 5.8 验证错误返回到所有输入的特定视图-> 旧的不起作用