在過濾器文件中,我有以下:Laravel 4認證令牌不匹配
Route::filter('auth', function()
{
if (Auth::guest()) return Redirect::to('user/login');
});
這些都是我在routes.php文件文件的路徑:
Route::group(['before' => 'auth'], function()
{
Route::resource('section', 'SectionController');
Route::resource('article', 'ArticleController');
});
Route::controller('user', 'UserController');
的UserController的是行動發生的地方。由於UserController在此方法處理登錄表單後該標準是Laravel刀模板,在使用中沒有包:
刃文件:
{{ Form::open(['url' => 'user/signin']) }}
{{ Form::token() }}
<div class="form-group">
<label>{{ trans('user.email') }}</label>
<input type="email" name="email" value="" class="form-control">
</div>
<div class="form-group">
<label>{{ trans('user.password') }}</label>
<input type="password" name="password" value="" class="form-control">
</div>
<input type="submit" class="btn btn-primary" value="{{ trans('login') }}">
{{ Form::close() }}
,這是由於UserController後動作:
public function postSignin()
{
//
if (Auth::attempt(['email' => Input::get('email'), 'password' => Input::get('password')]))
{
return Auth::user()->email;
}
else
{
return Redirect::to('user/login')->with('message', trans('login.failure'));
}
}
這是我使用的遷移文件:
public function up()
{
//
Schema::create('users', function ($table) {
$table->increments('id');
$table->string('email', 16)->unique();
$table->string('password', 255);
$table->timestamps();
});
}
但是當我登錄在,我得到一個異常:
Illuminate \ Session \ TokenMismatchException
在filters.php文件拋出:
Route::filter('csrf', function()
{
if (Session::token() != Input::get('_token'))
{
throw new Illuminate\Session\TokenMismatchException;
}
});
我在做什麼錯? Auth ::嘗試哈希密碼?它是用於生成root用戶的Seeder中的哈希。當我轉儲Session :: token()時,它與我的Form :: token()相同,但是仍然會在filters.php文件中引發TokenMismatchException。
更新 我禁用了csrf過濾器,以便能夠實際看到令牌。在我提交表單之前,兩個令牌Session :: token()和Form :: token()是相同的,我通過查看HTML源代碼來檢查它。當我提交表單並在我的postSignin方法內使用dd()轉儲令牌時,Session :: token()已更改。它不再與HTML源代碼中顯示的Session :: token()相同。
return array(
'driver' => 'array',
);
本地文件夾中的會話配置。
也請發表您的刀片文件。如果你使用'{{Form :: open()}}'csrf隱藏字段會自動添加,如果你手工創建了表單,它不會,除非你添加它;但是之後我們需要看看你是如何格式化它的。 – Luceos
@Luceos刀片文件已添加。標準刀片模板,csrf自動設置。 –
哦,我明白了;這個錯誤是由「香草」拉拉維爾造成的? – Luceos