Laravel 5.1真的有很少的文档..我需要清楚如何使用Auth middileware保护路由..
文档告诉添加“middleware”=>“auth”参数进行路由 . 或者可以做
public function __construct() { $this->middleware('auth'); }
但是如何使用Auth中间件进行实际用户身份验证并自动重定向到受保护路由/登录?
在Kernel.php中 - 在受保护的$ routeMiddleware下有注册的中间件,如下所示:
/** * The application's route middleware. * * @var array */ protected $routeMiddleware = [ 'auth' => 'App\Http\Middleware\Authenticate', 'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', ];
您可以看到使用App \ Http \ Middleware \ Authenticate注册'auth' .
然后你可以按照这条路径 - 如果你打开 /app/Http/Middleware/Authenticate.php ,你会发现公共函数句柄:
/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if ($this->auth->guest()) { if ($request->ajax()) { return response('Unauthorized.', 401); } else { return redirect()->guest('auth/login'); } } return $next($request); }
这里是管理重定向的地方,您可以根据自己的需要对其进行修改,也可以创建自定义中间件 .
最后 - 因为它是在文档中编写的 - 在控制器中,需要进行身份验证,您将添加
如果提供的中间件不符合您的需求,您可以创建它 .
在laravel 5.2上,如果要隐藏注册表单或登录表单视图,则应使用中间件:
$this->middleware('mymiddleware', ['only' => ['register', 'showRegistrationForm', 'login', 'showLoginForm']]);
要么
$this->middleware('mymiddleware', ['except' => ['register', 'showRegistrationForm', 'login', 'showLoginForm']]);
这是因为注册和登录路由是AuthController上的post方法,而showXxxxForm是表单视图 .
希望它能帮助任何人 .
2 回答
在Kernel.php中 - 在受保护的$ routeMiddleware下有注册的中间件,如下所示:
您可以看到使用App \ Http \ Middleware \ Authenticate注册'auth' .
然后你可以按照这条路径 - 如果你打开 /app/Http/Middleware/Authenticate.php ,你会发现公共函数句柄:
这里是管理重定向的地方,您可以根据自己的需要对其进行修改,也可以创建自定义中间件 .
最后 - 因为它是在文档中编写的 - 在控制器中,需要进行身份验证,您将添加
如果提供的中间件不符合您的需求,您可以创建它 .
在laravel 5.2上,如果要隐藏注册表单或登录表单视图,则应使用中间件:
要么
这是因为注册和登录路由是AuthController上的post方法,而showXxxxForm是表单视图 .
希望它能帮助任何人 .