通过中间件检查子域是否存在
Check if subdomain exist via middleware
我想在将用户重定向到登录表单之前检查子域是否存在。所以我想在“auth”中间件之前应用“website”中间件。
web.php:
Route::domain('{website}.localhost')->middleware(['website', 'auth'])->group(function () {
Route::get('/', [HomeController::class, 'index'])->name('home');
//others routes
});
网站中间件:
if(Website::where('domain_name', $request->route('website'))->exists())
{
return $next($request);
}
else
{
abort(404);
}
如果我尝试转到 http://fakedomain.localhost,我将被重定向到登录表单,而不是收到 404。
编辑 1:
我在 kernel.php
中注册了我的中间件
您可以尝试调整中间件的优先级,使其 运行 这个中间件优先于 'auth'。您可以静态定义中间件优先级列表(已在基础 Illuminate\Http\Kernel
上定义),也可以动态地添加到服务提供商中的中间件优先级列表中。
在服务提供商的 boot
方法中:
use Illuminate\Http\Contracts\Kernel;
public function boot()
{
$this->app[Kernel::class]->prependToMiddlewarePriority(YourMiddleware::class);
}
或者您可以在 App\Http\Kernel
:
中静态定义列表
protected $middlewarePriority = [
\App\Http\Middleware\YourMiddleware::class,
\Illuminate\Cookie\Middleware\EncryptCookies::class,
...
];
Laravel 9.x Docs - Middleware - Registering Middleware -Sorting Middleware
打开Kernel.php
添加 $routeMiddleware
数组你的中间件
protected $routeMiddleware = [
'website' => YourMiddlewareClass::class
];
我想在将用户重定向到登录表单之前检查子域是否存在。所以我想在“auth”中间件之前应用“website”中间件。
web.php:
Route::domain('{website}.localhost')->middleware(['website', 'auth'])->group(function () {
Route::get('/', [HomeController::class, 'index'])->name('home');
//others routes
});
网站中间件:
if(Website::where('domain_name', $request->route('website'))->exists())
{
return $next($request);
}
else
{
abort(404);
}
如果我尝试转到 http://fakedomain.localhost,我将被重定向到登录表单,而不是收到 404。
编辑 1: 我在 kernel.php
中注册了我的中间件您可以尝试调整中间件的优先级,使其 运行 这个中间件优先于 'auth'。您可以静态定义中间件优先级列表(已在基础 Illuminate\Http\Kernel
上定义),也可以动态地添加到服务提供商中的中间件优先级列表中。
在服务提供商的 boot
方法中:
use Illuminate\Http\Contracts\Kernel;
public function boot()
{
$this->app[Kernel::class]->prependToMiddlewarePriority(YourMiddleware::class);
}
或者您可以在 App\Http\Kernel
:
protected $middlewarePriority = [
\App\Http\Middleware\YourMiddleware::class,
\Illuminate\Cookie\Middleware\EncryptCookies::class,
...
];
Laravel 9.x Docs - Middleware - Registering Middleware -Sorting Middleware
打开Kernel.php
添加 $routeMiddleware
数组你的中间件
protected $routeMiddleware = [
'website' => YourMiddlewareClass::class
];