Как мне установить промежуточное ПО в laravel

Итак, у меня есть промежуточное ПО для аутентификации, которое зарегистрировано в Http/Kernel.php как:

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', 'HomeController@dashboard', ['middleware' => 'auth']);

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

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

Как заставить его запустить этот метод на этом маршруте?

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


person TheWebs    schedule 20.09.2015    source источник
comment
где твой дд ()? что произойдет, если вы поставите $ this- ›middleware ('auth'); в вашем конструкторе HomeController. В соответствии с документами, однако, удобнее указать промежуточное ПО в конструкторе вашего контроллера.   -  person ExoticChimp    schedule 21.09.2015
comment
@ExoticChimp Я хочу, чтобы он работал только с определенным действием контроллера   -  person TheWebs    schedule 21.09.2015
comment
Пожалуйста, проверьте документы в моем ответе. Вы помещаете это в свой конструктор: $ this- ›middleware ('auth', ['only' =› ['dashboard']]);   -  person ExoticChimp    schedule 21.09.2015


Ответы (1)


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

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

Что касается первой части, пробовали ли вы запустить composer dump-autoload с терминала?

person ExoticChimp    schedule 20.09.2015
comment
с автозагрузкой дампа композитора, он ничего не делает, он генерирует карты классов, но та же проблема - person TheWebs; 21.09.2015