2015-09-20 5 views
2

Так у меня аутентификации промежуточного уровня, который зарегистрирован в Http/Kernel.php как:Как настроить промежуточное программное обеспечение в Laravel

protected $routeMiddleware = [ 
    'auth' => \App\Http\Middleware\Authenticate::class, 
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 
]; 

Далее я сделал изменения в функцию промежуточных ручек в классе Authenticate:

public function handle($request, Closure $next) 
{ 
    if ($this->auth->check()) { 
     $user = $this->auth->user(); 

     $currentDateTime  = strtotime('Y-m-d H:i:s'); 
     $tokenExpirationTile = strtotime($user->token_expiration); 

     if ($currentDateTime <= $tokenExpirationTile) { 
      return $next($request); 
     } else { 
      $this->auth->logout(); 
      redirect('home/login')->with('message', 'Your session has expired. Please login in again'); 
     } 
    } else { 
     redirect('home/login')->with('message', 'Please login before attempting to access that'); 
    } 
} 

И, наконец, я создал маршрут:

Route::get('home/dashboard', '[email protected]', ['middleware' => 'auth']); 

я могу посетить этот маршрут e, но как не подписанный пользователь, я должен быть перенаправлен.

Когда я через dd() в функции handle ничего не происходит.

Как его получить, чтобы запустить этот метод на этом маршруте?

Также, когда дело доходит до других контроллеров, где вам нужно пройти аутентификацию перед каждым запросом на действие, как вы говорите: «перед каждым действием запустите этот метод». В рельсах я бы before_action :method_name

+0

где ваш dd()? что произойдет, если вы положите $ this-> middleware ('auth'); в вашем конструкторе HomeController. Согласно документам «Однако удобнее указывать промежуточное ПО внутри вашего конструктора контроллера». – ExoticChimp

+0

@ExoticChimp Я хочу, чтобы он работал только на конкретном действии контроллера. – TheWebs

+0

Пожалуйста, проверьте документы в моем ответе. Вы помещаете это в свой конструктор: $ this-> middleware ('auth', ['only' => ['dashboard']]); – ExoticChimp

ответ

1

Для второй части вашего вопроса, пожалуйста, обратитесь к документации о том, как применять промежуточное программное обеспечение для конкретных действий в контроллере и на маршрутах:

http://laravel.com/docs/master/controllers#controller-middleware http://laravel.com/docs/master/routing#route-group-middleware

Для первая часть, вы пытались запустить «компоновщик-автозагрузка» с терминала?

+0

с автозагрузкой композитора, он ничего не делает, он генерирует карты классов, но тот же вопрос – TheWebs

Смежные вопросы