如何在 Laravel 中创建自定义基本身份验证或使用两个中间件

How to create custom basic auth or use two middleware in Laravel

我正在使用 laravel 5.2.45 并且我有以下路线

Route::group([
    'namespace' => 'Api',
    'prefix' => "api",
    'middleware' => 'service'
], function() {

    Route::get('student/{msisdn}/status', 'StudentController@status');

});

我的中间件是 service 所以这是我的 config/service.php

<?php 

return [
    'password' => //password here,
    'ip' => //my server ip here,
    'url' => [
        'check_status' => 'http://%s/student/api/checkUser?password=%s&msisdn=%s',

    ]
];

根据我的要求,这段代码工作正常,但我现在想要的是在没有数据库的情况下应用基本身份验证。我只想要一个硬编码的用户名和密码(这是我的要求,否则我会使用 db)。

由于我的中间件是 service,我将如何在其上应用另一个中间件 basic.auth,是否可以使用两个中间件?或者结合服务和 basic.auth 中间件并创建新的中间件?关于我该怎么做的任何建议、教程或示例代码?

您可以将任意数量的中间件添加到一个路由或一组路由。

Route::group([
    'namespace' => 'Api',
    'prefix' => "api",
    'middleware' => ['service', 'auth.basic']
], function() {
    Route::get('student/{msisdn}/status', 'StudentController@status');
});

至于没有数据库的身份验证,您可以创建自定义中间件并在其中硬编码登录信息。将此中间件应用于所有路由以强制执行身份验证。

这应该可以帮助您入门。虽然您需要将过滤器转换为中间件,但此处的代码非常简单。