2017-02-15 44 views
0

У меня есть простая форма на моем сайте, и я хочу проверить, не введет ли пользователь в систему, прежде чем он сможет опубликовать форму. Итак, я поместил промежуточное ПО auth на этот почтовый маршрут. как this-Laravel auth middleware не работает для почтового маршрута

Route::post('test','[email protected]_mid')->middleware('auth'); 

Мой аутентификации промежуточного слоя, как this- 'логин'

public function handle($request, Closure $next, $guard = null) 
    { 
     if (Auth::guard($guard)->guest()) { 
      if ($request->ajax() || $request->wantsJson()) { 
       return response('Unauthorized.', 401); 
      } else { 
       return redirect()->guest('login'); 
      } 
     } 

     return $next($request); 
    } 

Здесь перенаправлять на мою страницу входа в систему.

Проблема в том, после того, как я нажал на кнопку входа в систему, он shows-

MethodNotAllowedHttpException in RouteCollection.php line 219: 
at RouteCollection->methodNotAllowed(array('POST')) in RouteCollection.php line 206 

Мой HTML form-

{{Form::open(array('url'=>"/test"))}} 

<input type="submit" value="submit"> 

{{Form::close()}} 

Но если я устанавливаю аутентификации промежуточного ПО на GET route.It игровая работая штраф. В случае GET, если я вышел из системы, он приведет меня к странице входа и после того, как я предоставил регистрационные данные и нажал кнопку входа в систему, она приведет меня к желаемому GE T маршрут.

ответ

0

Убедитесь, что ваша форма просмотра использует метод POST.

{{Form::open(array('url'=>'/test', 'method'=>'post'))}} 

Пожалуйста, обратите внимание, что $guard переменная NULL по умолчанию, если не указано иное. См. Конфигурацию /config/auth.php для доступных охранников.

Route::post('test', '[email protected]_mid')->middleware('auth:web'); 
+0

Не работает 'охранники' @ Крис Cynarski –

+0

=> [ 'паутина' => [ 'драйвер' => 'сессии', 'поставщик' => 'пользователи', ], –

+0

На самом деле по умолчанию защитник является веб-сайтом. Вы уверены, что используете POST-запрос '/ test'? Добавьте свой HTML-представление к вопросу. –