Итак, у меня есть промежуточное ПО для аутентификации, которое зарегистрировано в 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