Php 如何编写全局路由过滤器中间件来重定向用户?
据我所知,在Laravel5.3中,他们已经弃用了路由过滤器,转而使用中间件。对此进行了讨论 我试图做一些类似的事情,但不是定义一个路由模式,而是要定义一个“过滤器”,在这里我检查登录用户的特定条件,如果不满足此条件,则重定向用户。我希望此筛选器全局应用于应用程序Php 如何编写全局路由过滤器中间件来重定向用户?,php,laravel,laravel-5,Php,Laravel,Laravel 5,据我所知,在Laravel5.3中,他们已经弃用了路由过滤器,转而使用中间件。对此进行了讨论 我试图做一些类似的事情,但不是定义一个路由模式,而是要定义一个“过滤器”,在这里我检查登录用户的特定条件,如果不满足此条件,则重定向用户。我希望此筛选器全局应用于应用程序 我该怎么做?我只看到Route::pattern方法的文档,但Route::filter不存在。您可以像这样使用Laravel中间件: <?php namespace App\Http\Middleware; use Clo
我该怎么做?我只看到Route::pattern方法的文档,但Route::filter不存在。您可以像这样使用Laravel中间件:
<?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);
}
}
要创建新的中间件,请使用make:middleware-Artisan命令:
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);
}
}
现成的web中间件组由RouteServiceProvider
自动应用于routes/web.php
文件
受保护的$middlewareGroups=[
“网络”=>[
\App\Http\Middleware\EncryptCookies::class,
\Illumb\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illumb\Session\Middleware\StartSession::class,
\照亮\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illumb\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\CheckUserAge::class,//谢谢!感谢您的帮助很高兴知道它帮助了您。谢谢!
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
],
];