Так у меня аутентификации промежуточного уровня, который зарегистрирован в 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
где ваш dd()? что произойдет, если вы положите $ this-> middleware ('auth'); в вашем конструкторе HomeController. Согласно документам «Однако удобнее указывать промежуточное ПО внутри вашего конструктора контроллера». – ExoticChimp
@ExoticChimp Я хочу, чтобы он работал только на конкретном действии контроллера. – TheWebs
Пожалуйста, проверьте документы в моем ответе. Вы помещаете это в свой конструктор: $ this-> middleware ('auth', ['only' => ['dashboard']]); – ExoticChimp