2016-09-20 47 views
0

我已经为我的网站禁用了Cookie并获得了TokenMismatchException。由于我使用会话文件驱动程序和我的表单,我有{{ csrf_field() }}为什么当我禁用我的网站的Cookie时,我获得了TokenMismatchException为我的网站禁用cookies,我得到TokenMismatchException

如果我检查该被做我可以看到该令牌在后发送的呼叫:令牌J0Y0t2hj3jjVFMdGCch0apliPqlz1lZlwUc0VqCk

回答

3

为什么我得到TokenMismatchException当我禁用cookie为我的网站?

由于表单中的CSRF标记值需要与存储在会话中的CSRF标记值进行比较。

如果您的会话没有使用Cookie,那么当然这会失败。

因此,请决定是否要求您的应用程序使用Cookie,或者如果您想使用安全性较低的方式来传输会话标识(GET/POST - 如何在您的框架中配置该应用程序,应该在其文档中)

+0

我的会话驱动程序被设置为文件,这意味着laravel不应该使用Cookie来存储会话数据 –

+0

我不是在谈论会话数据的存储,而是通过会议客户端和服务器之间的ID。 – CBroe

+0

无论如何,存储在cookie中的加密数据不是一个“真正的”会话(恕我直言,至少;我从来不明白为什么某些框架会在这种奇怪的机制中看到任何好处。)“真正的”会话将数据存储在服务器上,但当然需要某种方式将存储的数据与特定的客户端相关联 - 这就是_session id_发挥作用的地方。客户端必须在服务器下一次请求时将服务器_back_告诉的会话ID发送给服务器,以便服务器知道哪一组存储的数据属于该客户端。 [...] – CBroe

0

检查你的配置文件(config/session.php)并查看你的会话驱动程序是否为cookie。如果是的话,那么改为别的。 这里是笔记:Laravel's HTTP Session

file - sessions are stored in storage/framework/sessions. 
cookie - sessions are stored in secure, encrypted cookies. 
database - sessions are stored in a relational database. 
memcached/redis - sessions are stored in one of these fast, cache based stores. 
array - sessions are stored in a PHP array and will not be persisted. 
+0

在我的.ENV SESSION_DRIVER =文件 –

+0

好吧,那么,如果是这样的话,你必须传递客户端唯一ID与您的请求每次虽然 – Orion

相关问题