php - Laravel API token 不匹配异常

标签 php api laravel token

我有一个带有发布数据的 API 调用;假设这是登录过程。

使用 Chrome 的 Postman 扩展,我通过 POST 发送用户名和密码以登录用户。 但我收到了这条消息:

Illuminate \ Session \ TokenMismatchException

在我的基本 Controller 中我有:

    /**
     * Initializer.
     *
     * @return void
     */
    public function __construct() {
        // CSRF Protection
        $this->beforeFilter('csrf', array('on' => 'post'));

        // Layouts/Notifications
        $this->messageBag = new Illuminate\Support\MessageBag;

    }

当我使用 beforeFilter 删除行时,一切正常。 但这不是解决办法。 任何 POST 调用都会收到此错误消息。 我知道我需要这个 _token。但是,当我从 API 调用时如何获得此 token ?我知道我可以在 Laravel 中创建一个 token ,但是当我通过 API 从外部调用时我该如何做呢?

最佳答案

通常,API 用于跨站点请求。所以你的 CSRF 保护是毫无意义的。

如果您不打算跨站点使用它,那么 API 很可能不是您要执行的操作的最佳解决方案。无论如何,您可以创建一个返回 token 的 API 端点。

public function getToken(){
    return Response::json(['token'=>csrf_token()]);
}

如果您想在某些方法上禁用 CSRF 保护,您可以使用exceptonly

$this->beforeFilter('csrf', array('on' => 'post', 
                                 'except'=>array('methodName', 'anotherMethod')
                                  ));

请引用official Laravel documentation .

关于php - Laravel API token 不匹配异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27944512/

相关文章:

php - 让一个变量可以在 Laravel 应用程序的任何地方访问

php - 在 PHP 中执行 SQL 查询时出现问题

php - MySQL查询根据相似标签的数量进行排名

python - 从 API 响应中解析 XML

json - 验证 Node 中 swagger json.schema 的 POST 数据

php - 如何访问数组中的json?

php - 从mysql以表格格式显示

php - 从 php 页面启动在服务器上运行的 php 脚本(并打开套接字)

xml - RESTful VS XML 样式的请求

laravel - 有没有办法知道当前方法是否用于链式调用?