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

时间:2017-05-15 12:24:48

标签: php laravel laravel-5.2

我使用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,是否可以使用两个中间件?或者结合使用service和basic.auth中间件并创建新的中间件?关于我该怎么做的任何建议,教程或示例代码?

1 个答案:

答案 0 :(得分:2)

您可以向路线或路线组添加任意数量的中间件。

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

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

这应该让你开始。虽然您需要将过滤器转换为中间件,但这里的代码非常简单。

https://stackoverflow.com/a/28322507/5892849