加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel API TokenMismatchException

发布时间:2020-12-14 19:38:19 所属栏目:大数据 来源:网络整理
导读:我有一个带有帖子数据的API调用;让我们说这是登录过程. 使用Chrome的Postman扩展程序,我通过POST发送用户名和密码以登录用户. 但是我得到了这样的信息: Illuminate Session TokenMismatchException 在我的基本控制器中,我有: /** * Initializer. * * @
我有一个带有帖子数据的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 IlluminateSupportMessageBag;

    }

当我用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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读