【发布时间】:2021-12-07 02:41:57
【问题描述】:
我希望所有页面都需要登录,/index 和 /login 除外。我试图这样解决它:
Route::filter('pattern: ^(index|login)*', 'auth');
在 laravel 8 中 Route::filter 不再可用。如何解决这个问题,而不是将每个路由定义都放在一个大组中?
【问题讨论】:
我希望所有页面都需要登录,/index 和 /login 除外。我试图这样解决它:
Route::filter('pattern: ^(index|login)*', 'auth');
在 laravel 8 中 Route::filter 不再可用。如何解决这个问题,而不是将每个路由定义都放在一个大组中?
【问题讨论】:
在您的 routes/web.php 文件中创建一个中间件组。
Route::middleware(['auth'])->group( function () {
// Your protected routes here
});
或者,您可以为路由设置中间件例外:
// In your auth middleware that extends Authenticate
...
/**
* Routes that should skip handle.
*
* @var array $except
*/
protected array $except;
public function __construct(){
$this->except = [
route('index'),
route('login')
];
}
/**
* @param \Illuminate\Http\Request $request
*/
public function handle( Request $request )
{
$current_route = $request->route();
if( in_array($current_route, $this->except ) {
// Route don't needs to be guarded
}
}
...
如果您不想拥有大型组,那么您可以为每个路由指定中间件(可能看起来很乱)
Route::get('/route', [FooController::class, 'index'])->middleware('auth');
【讨论】: