在我的网络应用程序alpha测试中,有两个恶魔抱怨csrf令牌不匹配问题,
有没有办法检查csrf令牌是否正常工作而不进入laravel的测试功能?
我正在使用
Route::post('signup', array('before' => 'guest|csrf','uses' => 'AuthController@postSignup'));
这在路线
和
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
在表格内部,我做错了什么?
另外我想知道,用户手动输入的可能原因是什么与csrf令牌不匹配?
答案 0 :(得分:1)
如果您使用Form::open()
,Laravel 4会自动为您添加令牌。你的表单中有两个令牌吗?
令牌是存储在当前Session
中的随机字符串,因此如果您遇到问题,您应该查看您的会话并回答一些问题(对您自己):
1)这是什么时候发生的?这有多频繁? 在某些时候会话将会过期,如果你长时间保持一个表格,它将会过期。
2)你正在使用哪个sesion驱动程序? 你已经改变了驱动程序吗? (文件,cookie,数据库......)
3)你能重现吗?
4)你能跟踪Session :: getId(),看看当你收到错误时它是否也会改变?将其添加到您的代码中,并查看日志文件,了解发生错误时会发生什么:
Log::info('session.id='.Session::getId());
Log::info('session.token='.Session::token());