我正在使用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应用程序上实现它.
我正在回答我自己的问题,因为我能够使其工作,但仍希望了解其他人对我的解决方案和正确的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
文件上是硬编码的,因为我没有看到需要数据库访问进行验证.