Laravel - 中间件 - 学习/实践

1.应用场景

中间件为过滤进入应用的 HTTP 请求提供了一套便利的机制。

1. 利用中间件实现禁止未登录用户访问[指定的]页面

备注:

Laravel 内置了一个中间件来验证用户是否经过认证(如登录),如果用户没有经过认证,中间件会将用户重定向到登录页面,而如果用户已经经过认证,中间件就会允许请求继续往前进入下一步操作。

2. CORS中间件可以用于为离开站点的响应添加合适的头(跨域);

3. 日志中间件可以记录所有进入站点的请求,从而方便我们构建系统日志系统;

4. Laravel 框架自带了一些中间件,包括认证、CSRF 保护中间件等

2.学习/操作

 

1. 文档

在开发程序时, 请查看对应版本的手册

中间件 | 基础组件 | Laravel 5.8 中文文档

路由 | 基础组件 | Laravel 5.8 中文文档

laravel使用中间件实现禁止未登录用户访问页面_snow_small的博客-CSDN博客

2. 整理输出

环境交代

版本: laravel 5.8 

2.1 认证[自定义的中间件]

1、生成中间件

[root@localhost MRedis]# php artisan make:middleware CheckLogin
Middleware created successfully.

2、实现中间件

app\http\middleware\CheckLogin.php

public function handle($request, Closure $next)
{
    if (!session('user')) {
        return redirect('login');//具体操作, 可自行定义
    }
    return $next($request);
}

3、注册中间件

在app\http\kernel.php下,添加的为最后一行

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,
    'check.login' => \App\Http\Middleware\CheckLogin::class, // 这一行, key自行命令
];

4、使用中间件

Note:

一定要把登录路由的放在外面, 否则会一直登录不上

Route::post('/register', 'Web\UserController@register');
Route::post('/login', 'Web\UserController@login');
Route::middleware(['check.login'])->group(function () {
    // 内部为,不想让未登录用户进的路由, 例如下方:
    Route::match(['get', 'post'], '/logout', 'Web\UserController@logout');
    Route::get('/flight/list', 'Web\FlightController@getList');
    Route::get('/flight/{id}', 'Web\FlightController@getDetail');
    //...
});

5、测试是否成功

多测试之后即可, 发现已经生效

http://roast.test/flight/1

跳转到Route::post('/login', 'Web\UserController@login');对应的响应

后续补充

...

3.问题/补充

TBD

4.参考

lavarel学院中文手册

中间件 | 基础组件 | Laravel 5.8 中文文档

路由 | 基础组件 | Laravel 5.8 中文文档

laravel使用中间件实现禁止未登录用户访问页面_snow_small的博客-CSDN博客

后续补充

... 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值