控制器不是检查用户是否经过身份验证的正确位置.你应该使用中间件.要获取有关中间件检查的信息,请访问此处
让我们看看如何使用默认的Laravel auth
中间件来实现此目的:
首先摆脱你的AdminBaseController
只使用AdminController
然后,您必须检查auth
文件中是否启用了中间件app\Http\Kernel.php
你应该有这条线:
protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class,
这意味着中间件是活动的并且可用于您的路由.
现在让我们进入中间件类app\Http\Middleware\Authenticate.php
来指定中间件的行为:
//this method will be triggered before your controller constructor public function handle($request, Closure $next) { //check here if the user is authenticated if ( ! $this->auth->user() ) { // here you should redirect to login } return $next($request); }
现在唯一要做的就是决定应该应用中间件的路由.假设您有两条路径只能从经过身份验证的用户访问,您应该指定以这种方式使用这两条路由的中间件:
Route::group( ['middleware' => 'auth' ], function() { Route::get('admin/index', 'AdminController@index'); Route::get('admin/ajuda', 'AdminController@ajuda'); });