Laravel 5框架学习之用户认证(2)

public function handle($request, Closure $next) { //如果请求中含有 foo,我们就回到控制器首页 if ($request->has('foo')) { return redirect('articles'); } return $next($request); }

如果希望在全部的请求使用中间件,需要在 kernel.php 中的 $middleware 中登记:

protected $middleware = [ ... 'App\Http\Middleware\Demo', ];

现在我们可以测试一下,假设我们访问 /articles/create?foo=bar ,我们被重定向到了首页。

让我们去除这个显示中间件,我们来创建一个真正有用的中间件。假设我们想保护某个页面,这个页面必须是管理者才能访问的。

复制代码 代码如下:


php artisan make:middleware RedirectIfNotAManager

我们来添加处理代码:

public function handle($request, Closure $next) { if (!$request->user() || !$request->user()->isATeamManager()) { return redirect('articles'); } return $next($request); }

下面修改我们的模型:

public function isATeamManager() { return false; }

简单起见,我们直接返回false。这次我们把中间件放置在 kernel.php 中的$routeMiddleware 中。

protected $routeMiddleware = [ ... 'manager' => 'App\Http\Middleware\RedirectIfNotAManager', ];

我们做一个测试路由测试一下:

Route::get('foo', ['middleware' => 'manager', function() { return 'This page may only be viewed by manager'; }]);

guest身份访问或者登录身份访问都会返回主页,但是如果修改 isATeamManager() 返回 true,登录身份访问可以看到返回的信息。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/e7338c7091bbe150bf9099868496badb.html