在过滤器文件中,我有以下: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