正确设置Laravel 5 CSRF令牌的标头

 珠海南驰焊接检测工程有限公司 发布于 2022-12-07 17:27

好吧,几个小时都在搜索这个,但是找不到解决方案的开头.

我正在使用带有laravel后端的angularJS前端.Restangular是我的通讯服务.

我的POST很好,因为我可以在数据中包含_token,它会起作用.

但是对于Restangular来调用destroy函数它看起来像......

Restangular.all('auth/logout').remove(); //maps to AuthController@Destroy

一切都很好,但是你会得到一个TOKENMISMATCH例外,这是一个很好的安全问题

由于我找不到将_token包含在remove中的方法,因为它实际上是无体的,所以我决定将标记放在标题中.

RestangularProvider.setDefaultHeaders({'X-XSRF-TOKEN': CSRF_TOKEN}); //CSRF_TOKEN gathered elsewhere

在Chrome dev tolos中,我可以看到标头设置为

X-XSRF-TOKEN:ClkQIRLpFQgMg8ZT6X5CF6doCplRfdJzW8msx2JI

X-XSRF-TOKEN 正是 VerifyCrsfToken.php所寻求的.然而,它吐出了解密错误.任何其他令牌名称,例如XSRF-TOKEN,_TOKEN,CSRF_TOKEN都会吐出令牌不匹配.

由于最后一个事实,似乎标题被正确声明,但超出我的理解范围的东西导致Laravel无法解密.而且我非常关注解密功能,但不明白它为什么会失败......

谢谢您的帮助.

1 个回答
  • 这是由于csrf令牌的加密.Laravel期望令牌被加密.

    它尝试解密您提供的普通令牌,但它失败了.

    在标题中使用令牌之前,您必须对其进行加密.

    $encrypter = app('Illuminate\Encryption\Encrypter');
    $encrypted_token = $encrypter->encrypt(csrf_token());
    

    这对我有用.

    亚历克斯

    2022-12-11 02:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有