目前我正在尝试构建一个网站,它的后端和angularJS一样纤细。因此我看了几个教程和演示项目。这是最有趣的一个:https://github.com/alexdebril/slim-angularPHP Slim框架在每个连接上生成CSRF令牌
开箱,我有一个CSRF实施的问题。在这个项目中,CSRF保护在中间件中实现,以便应用于每个连接。好与不好无关。
但是,当我使用composer和npm安装所有依赖关系时,该项目运行不正常,因为每个服务器连接都会获取将存储在PHP会话中的新CSRF标记。
所以在这个项目的主页面上有一个角度表单,它将用csrf标记将安全字符串发送到服务器。服务器然后只回答与相同的字符串和角度控制器打印出来。当我第一次触发表单提交时,一切都会好起来的,但是在第二次提交时,服务器将响应错误400,因为他有一个角度还没有的新csrf标记。
但是这个示例项目的创建者不可能犯这样的错误,他可以吗?为什么我的apache为同一用户的每个连接创建一个新的csrf标记?我该如何解决这个问题?
我的依赖关系:
苗条\苗条v3.8.1
苗条\ CSRF v0.7.0
角v1.6.4(路线,咏叹调,材质,UI的自举,饼干,HTTP-AUTH-拦截器)
那么我怎么能为每个用户只有一个CSRF令牌?
或者我如何在angular中更新tokenizer服务以便始终使用最新的CSRF令牌?或者我需要一个观察者?检测这个?
slim-angular的文档解释了如何标记每个请求。参见[slim-angular Tokenizer Example](https://github.com/alexdebril/slim-angular#tokenizer)。 – georgeawg