Laravel 5.2令牌不匹配和中间件错误

时间:2016-12-29 08:52:02

标签: php laravel laravel-5.2 middleware laravel-authorization

我正在使用Laravel 5.2并手动执行所有身份验证。所以,虽然一切正常,但我收到token mismatch错误,原因是我没有通过路由文件中的web中间件传递我的路线:

Route::group(['middleware'=>['web']],function (){
    Route::get('/', function () {
        return view('welcome');
    })->name('home');
});
Route::social();

其中Route::social();

public function social() {

    $this->post('/signup',['uses'=>'UserController@postSignUp','as'=>'signup']);
    $this->post('/signin',['uses'=>'UserController@postSignIn','as'=>'signin']);
    $this->get('/dashboard',function() {
        return view('dashboard');
    })->middleware('auth');
}

但是,如果我将Route::social();移动到Web中间件组,它不会计算错误,因此即使存在错误也会返回空错误。我该如何解决这个问题?我想要两件事!

我使用{!! Form::token() !!}

在表单中添加了令牌字段

1 个答案:

答案 0 :(得分:1)

您可能是在视图中手动添加$error数组,web中间件会做同样的事情,因此会被覆盖。 web中间件组包含\Illuminate\View\Middleware\ShareErrorsFromSession,它在视图中创建了一个带有验证错误的错误变量。

有两种方法可以解决这个问题。一种是仅包含此路由的\App\Http\Middleware\VerifyCsrfToken中间件。另一个,我更喜欢的是将路由添加到web中间件组,但是为您的阵列使用另一个名称时出错。