我对laravel相对较新。我面临的问题是每当我在数据库中存储一个值。 CSRF令牌无法保存。但是它正在生成令牌,但其列字段为NULL
。休息工作正常。
感谢。
修改
这是表格的代码
{!! Form::open(['url' => 'communities']) !!}
{!! Form::label('community_name', 'community_name: ') !!}
{!! Form::text('community_name') !!}
{!! Form::submit('Add Community') !!}
{!! Form::close() !!}
在令牌列中,它正在插入NULL
。根据我的小知识。列只能是NULL
。如果我们已经定义它是nullable()
控制器:
public function addCommunity() {
$input = Request::all();
Community::create($input);
}
路线:
Route::group(['middleware' => 'web'], function () {
Route::get('community', 'UserControllers\UserController@show');
Route::post('communities', 'UserControllers\UserController@addCommunity');
});
注意: 我也尝试过没有中间件,但它不起作用。
Token is working fine
token is generating random value it is correct
Database demonstration
型号代码:
class Community extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'community_name',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
];
}
答案 0 :(得分:0)
下面我添加了' _token',这是Laravel用于csrf令牌的字段名称。
因为你使用\ Community :: create($ input);为了创造它,Laravel"填充"您在$ fillable中定义的字段,然后保留该对象。
您的模型应该如下所示:
class Community extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'community_name',
'_token',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
];
}
至于保存csrf代币,你真的不必。 csrf令牌仅在一个会话期间用于防止恶意应用程序发布到您的表单,因为该应用程序没有该令牌。会话结束或重新启动(重新生成)时,csrf令牌已更新。从而使所有旧令牌无效,包括你持久存储到数据库中的旧令牌,这意味着你保存的令牌无用; - )
Saiyan Prince与Barry关于crsf代币的优秀文章分享了一个很好的链接:https://medium.com/@barryvdh/csrf-protection-in-laravel-explained-146d89ff1357#.l5toe4emw