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

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

发布时间:2020-12-17 17:49:28 所属栏目:安全 来源:网络整理
导读:好吧,几个小时都在搜索这个,但是找不到解决方案的开头. 我正在使用带有laravel后端的angularJS前端. Restangular是我的通讯服务. 我的POST很好,因为我可以在数据中包含_token,它会起作用. 但是对于Restangular来调用destroy函数它看起来像…… Restangular.a
好吧,几个小时都在搜索这个,但是找不到解决方案的开头.

我正在使用带有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无法解密.而且我非常关注解密功能,但不明白它为什么会失败……

谢谢您的帮助.

解决方法

这是由于csrf令牌的加密. Laravel期望令牌被加密.

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

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

$encrypter = app('IlluminateEncryptionEncrypter');
$encrypted_token = $encrypter->encrypt(csrf_token());

这对我来说很有把戏.

亚历克斯

(编辑:李大同)

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

    推荐文章
      热点阅读