所以,我有我的身份驗證的中間件,這是在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,
];
接下來,我做了一個變化中的身份驗證類中間件手柄功能:
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