php – Laravel API TokenMismatchException

前端之家收集整理的这篇文章主要介绍了php – Laravel API TokenMismatchException前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有帖子数据的API调用;让我们说这是登录过程.

使用Chrome的Postman扩展程序,我通过POST发送用户名和密码以登录用户.
但是我得到了这样的信息:

Illuminate \ Session \ TokenMismatchException

在我的基本控制器中,我有:

/**
     * 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调用时,我如何获得此令牌?我知道我可以在Laravel中创建一个令牌,但是当我通过API从外部打电话时我怎么能这样做呢?

通常,API用于跨站点请求.因此,您的CSRF保护毫无意义.

如果您不打算跨站点使用它,那么API可能不是您尝试做的最佳解决方案.无论如何,您可以创建一个返回令牌的API端点.

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

如果要在某些方法上禁用CSRF保护,可以使用except或only.

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

请参考official Laravel documentation.

猜你在找的Laravel相关文章