首页 > 其他分享 >7. Laravel 中间件

7. Laravel 中间件

时间:2023-02-28 11:47:58浏览次数:53  
标签:Laravel function middleware 中间件 auth class Middleware

Laravel 中间件

配套视频教程:https://www.bilibili.com/video/av83019817

作用

过滤 http 请求。

生成中间件的命令

php artisan make:middleware ShowAge

前置与后置中间件

<?php

namespace App\Http\Middleware;

use Closure;

class CheckAge
{
    public function handle($request, Closure $next)
    {
        echo "20";

        return $next($request);
    }
}
<?php

namespace App\Http\Middleware;

use Closure;

class CheckAge
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);
        echo "20";

        return $response;
    }
}

使用中间件

// 在路由中
Route::get('/pay', 'OrderController@pay')->middleware('auth');

use App\Http\Middleware\CheckAge;
Route::get('/pay', 'OrderController@pay')->middleware(CheckAge::class, 'auth');
// 在控制器中
public function __construct()
{
    $this->middleware('auth');
}

$this->middleware('auth');
$this->middleware('auth')->only('index');
$this->middleware('auth')->except('store');
$this->middleware(function ($request, $next) {
       return $next($request);
});

$this->middleware('auth')->except('login', 'register', 'refresh');

中间件分组

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,
    ],

    'api' => [
        'throttle:60,1',
        'auth:api',
    ],
];
Route::get('/', function () {
    //
})->middleware('web');

Route::group(['middleware' => ['web']], function () {
    //
});

Route::middleware(['web', 'subscribed'])->group(function () {
    //
});

给中间件传参数

<?php

namespace App\Http\Middleware;

use Closure;

class CheckRole
{
    // 注意这里 handle 多接收了一个参数
    public function handle($request, Closure $next, $role)
    {
        if (! $request->user()->hasRole($role)) {
            // Redirect...
        }

        return $next($request);
    }

}
Route::put('post/{id}', function ($id) {
    //
})->middleware('role:editor');
// 使用冒号分隔中间件名称和需要传递的参数

标签:Laravel,function,middleware,中间件,auth,class,Middleware
From: https://www.cnblogs.com/fuqian/p/17163463.html

相关文章

  • 9. Laravel 内置 web 认证
    Laravel内置web认证配套视频地址:https://www.bilibili.com/video/av74879198/原理注册:用户注册成功后。在服务器端生成session文件。给用户传递session(文件名......
  • 10. Laravel api 认证
    Laravelapi认证配套视频地址:https://www.bilibili.com/video/av74879198?p=3原理注册:用户注册成功后,随机生成长字符串作为token,原生token返回给用户。哈希后的......
  • 12. Laravel Passport 授权码模式
    LaravelPassport授权码模式配套视频地址:https://www.bilibili.com/video/av74879198?p=7哔哩哔哩提供一个“微信登陆”的链接,用户点击跳转到微信授权服务器。用户......
  • 11. Laravel Passport 密码模式
    LaravelPassport密码模式配套视频地址:https://www.bilibili.com/video/av74879198?p=5准备工作composercreate-project--prefer-distlaravel/laravellaravel6.......
  • php laravel 宝塔 访问报错 Warning: require(): open_basedir restriction in effect
    错误信息Warning:require():open_basedirrestrictionineffect.File(/www/wwwroot/nxcrm/vendor/autoload.php)isnotwithintheallowedpath(s):(/www/wwwroot/......
  • php laravel artisan nxos:install Error Call to undefined function Illumina
    命令/www/server/php/81/bin/phpartisannxos:install错误信息ErrorCalltoundefinedfunctionIlluminate\Filesystem\symlink()atvendor/laravel/frame......
  • Docker部署中间件
    Docker部署RabbitMQDocker下载RabbitMQdockerpullrabbitmq:3.8.4-managementDocker启动RabbitMQ容器dockerrun-d--namerabbitmq-p5672:5672-p15672:1567......
  • 消息中间件
    RabbitMQ消息的可靠性传递怎么保证?在使用RabbitMQ的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ为我们提供了两种方式用来控制消息的投递可靠......
  • golang,jwt-go实现生成token,中间件验证token
    前后端分离的项目。现在基本上都是JWT在go中通过https://github.com/dgrijalva/jwt-go 可以实现token的创建也解析注意:因为是案例,所以代码中很多配置是写死的,正常开发肯......
  • Django 框架基础9:视图(V)类视图、中间件
    1、类视图类视图是采用面向对象的思路定义类视图①继承自django.views的View。②不同的请求方式有不同的业务逻辑.类视图的方法就直接采用http请求名字作为函数名,如,ge......