Laravel 的 CRSF 如果不合法如何提示?

Laravel在CSRF验证没通过的是否会抛出一个异常,如何才能在ajax中返回一个json来提示前端?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

@xiaoxiaoming 我想 @JimChen 指的 Token 是指身分驗證的 Token,而非 csrf token
針對這個問題的回答:
可以在 Exception 中統一捕獲錯誤並回傳

public function render($request, Exception $exception)
    {
        if ($exception instanceof TokenMismatchException) {
            return reponse()->json([
                'message' => 'csrf token error'
            ]);
        }
}
6年前 评论
讨论数量: 6

@xiaoxiaoming 我想 @JimChen 指的 Token 是指身分驗證的 Token,而非 csrf token
針對這個問題的回答:
可以在 Exception 中統一捕獲錯誤並回傳

public function render($request, Exception $exception)
    {
        if ($exception instanceof TokenMismatchException) {
            return reponse()->json([
                'message' => 'csrf token error'
            ]);
        }
}
6年前 评论

@leochien 已经弄好啦,非常感谢,不过你的 reponse()写错啦,应该是response()

6年前 评论

如果你是采用ajax请求就没必要使用csrf了,采用token验证不就更好,csrf对于传统表单提交会更好

6年前 评论

@JimChen laravel不是自动验证post的csrf token的吗?你说的token是哪个呢?

6年前 评论

@leochien 这个方法应该写在那个控制器里面呢?

6年前 评论

在 app/Exceptions/Handler.php 的 render 方法裡

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!