首页laravel
求知小风 · 真仙

Ruby 程序员学习 laravel 框架笔记 (16)-用中间件来限制用户必须登录

求知小风发布于

有时候我们经常会控制一些页面需要登录才能访问,这个功能在 laravel 如何做到呢?

就是用中间件,只需要四个步骤。

现在我们来演示一下。

1. 生成 middleware

先生成 middleware 文件,使用下面的命令:

$ php artisan make:middleware AuthenticatedMiddleware

这样会生成一个文件:'app/Http/Middleware/AuthenticatedMiddleware.php'。

2. 修改 middleware

把这个文件打开,修改如下:

// 'app/Http/Middleware/AuthenticatedMiddleware.php'

<?php

namespace App\Http\Middleware;

use Closure;
use Auth;

class AuthenticatedMiddleware
{
    public function handle($request, Closure $next)
    {
        if(Auth::check())
            return $next($request);
        return redirect('/login');
    }
}

上面的 handle 方法的大致意思是用户只要登录过 (Auth::check()) 就可以继续进行下面的访问 ($next),否则的话,就跳到 /login 页面,也就是登录页面。

3. 引入中间件

写了中间件,我们要让系统引入它。

打开 app/Http/Kernel.php 文件,找到 $routeMiddleware 部分,添加下面一行:

'authenticated' => \App\Http\Middleware\AuthenticatedMiddleware::class

最终效果如下所示:

protected $routeMiddleware = [
    'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
    ...
    'authenticated' => \App\Http\Middleware\AuthenticatedMiddleware::class
];

这里我们定义了中间件的名称为 authenticated

4. 使用中间件

最后,我们来使用这个新创建的中间件。

打开路由配置文件 routes/web.php

Route::get('users', 'UsersController@index'); 修改成下面这样:

Route::get('users', 'UsersController@index')->middleware('authenticated');

最终的效果是这样:一旦用户访问 /users 就必须要登录,否则就跳到登录页面。

效果图如下:

完结。

本站帖子均为原创内容,如需转载请注明出处,谢谢。

0 条回复
暂无回复~~
相关小书
Ruby 程序员学习 laravel 框架笔记

Ruby 程序员学习 laravel 框架笔记

ruby程序员带你走进php的世界,轻松学习laravel这个神奇的框架

发表于

喜欢

© 汕尾市求知科技有限公司 | 粤ICP备19038915号 | 在线学员:129

Top