【发布时间】:2017-05-15 22:24:20
【问题描述】:
问题:我需要在使用 Laravel 5.4 创建的 API 上实现基本身份验证。由于我们需要在没有数据库的情况下实现它(只是从config() 获取凭据),我尝试创建一个注册的中间件,如下所示:
<?php
namespace App\Http\Middleware;
class AuthenticateOnceWithBasicAuth
{
public function handle($request, $next)
{
if($request->getUser() != conf('auth.credentials.user') && $request->getPassword() != conf('auth.credentials.pass')) {
$headers = array('WWW-Authenticate' => 'Basic');
return response('Unauthorized', 401, $headers);
}
return $next($request);
}
}
它可以工作,但这样我就只能拥有整个 API 的一个凭据。 我尝试在配置中创建多个凭据,从请求中保存用户和密码,但这样一来,它就像基本身份验证被禁用一样。
问题:有什么办法可以做到这一点?如何在不使用数据库的情况下在我的配置文件中拥有多个凭据?
【问题讨论】:
-
这段代码有问题!只有在用户名和密码不匹配的情况下,您才会返回 401。如果用户提供了有效的用户名,但密码无效,他将获得身份验证。你应该使用 ||而不是 &&
标签: php laravel authentication basic-authentication laravel-5.4