0
我在Laravel 5.3中了解到,他们已经弃用Route Filters来支持中间件。这是讨论here。如何编写全局路由过滤器中间件来重定向用户?
我想要做类似的事情,但不是定义路由模式我想定义一个“过滤器”,我检查登录用户的某种条件,并重定向用户,如果这种情况不满足。我希望将此过滤器全面应用于该应用。
我该怎么做?我只看到Route :: pattern方法的文档,但Route :: filter不存在。
我在Laravel 5.3中了解到,他们已经弃用Route Filters来支持中间件。这是讨论here。如何编写全局路由过滤器中间件来重定向用户?
我想要做类似的事情,但不是定义路由模式我想定义一个“过滤器”,我检查登录用户的某种条件,并重定向用户,如果这种情况不满足。我希望将此过滤器全面应用于该应用。
我该怎么做?我只看到Route :: pattern方法的文档,但Route :: filter不存在。
您可以使用Laravel中间件这样的:
要创建一个新的中间件,使用make:中间件工匠命令:
php artisan make:middleware CheckUserAge
和你CheckUserAge.php
类应该是这样的:
<?php
namespace App\Http\Middleware;
use Closure;
class CheckUserAge
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if (auth()->user->age <= 20) {
return redirect('home');
}
return $next($request);
}
}
如果您希望在您的应用程序的每个HTTP请求期间运行中间件,只需列出$middleware
中的中间件类财产app/Http/Kernel.php
类。
// Within App\Http\Kernel Class...
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
// insert your middleware here <--------------
'checkUserAge' => \App\Http\Middleware\CheckUserAge::class,
];
开箱时,Web中间件组会自动由
RouteServiceProvider
应用到您的routes/web.php
文件。
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\CheckUserAge::class, // <------- add here too
],
];
查看更多有关Middlewares in Laravel
希望这有助于!
谢谢!欣赏帮助 – asolberg
很高兴知道它对你有所帮助。谢谢! –