当前位置:  开发笔记 > 编程语言 > 正文

流明的HTTP基本身份验证,不使用数据库

如何解决《流明的HTTP基本身份验证,不使用数据库》经验,为你挑选了1个好方法。

我正在使用Lumen创建RESTful API,并希望为安全性添加HTTP基本身份验证.

routes.php文件中,它auth.basic为每个路径设置中间值:

$app->get('profile', ['middleware' => 'auth.basic', function() {
     // logic here
}]);

现在,当我访问时,我http://example-api.local/profile现在提示使用HTTP基本身份验证,这很好.但是当我尝试登录时,我收到以下错误消息:Fatal error: Class '\App\User' not found in C:\..\vendor\illuminate\auth\EloquentUserProvider.php on line 126

我不希望在数据库上完成用户验证,因为我只有一个凭证,所以很可能它只是获取变量的用户名和密码并从那里验证它.

顺便说一句,我通过这个laracast教程引用它.虽然它是一个Laravel应用程序教程,但我在Lumen应用程序上实现它.



1> basagabi..:

我正在回答我自己的问题,因为我能够使其工作,但仍希望了解其他人对我的解决方案和正确的laravel方式的更多见解.

我能够通过创建一个这样做的自定义中间件来解决这个问题:

environment(), $envs)) {
            if($request->getUser() != env('API_USERNAME') || $request->getPassword() != env('API_PASSWORD')) {
                $headers = array('WWW-Authenticate' => 'Basic');
                return response('Unauthorized', 401, $headers);
            }
        }

        return $next($request);
    }

}

如果您将查看代码,它是非常基本的并且运行良好.虽然我想知道是否有"Laravel"方式这样做,因为上面的代码是一个简单的PHP代码,它执行HTTP基本身份验证.

如果您注意到,用户名和密码的验证在.env文件上是硬编码的,因为我没有看到需要数据库访问进行验证.


这很有效.唯一问题(这是非常重要的)是这一行:`if($ request-> getUser()!= env('API_USERNAME')&& $ request-> getPassword()!= env('API_PASSWORD')){`应该是`if($ request-> getUser()!= env('API_USERNAME')|| $ request-> getPassword()!= env('API_PASSWORD')){` - 注意`||`vs` && `.
推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有