Как настроить промежуточное ПО в 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

2

Решение

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]