Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.4无数据库的基本身份验证_Php_Laravel_Authentication_Basic Authentication_Laravel 5.4 - Fatal编程技术网

Php Laravel 5.4无数据库的基本身份验证

Php Laravel 5.4无数据库的基本身份验证,php,laravel,authentication,basic-authentication,laravel-5.4,Php,Laravel,Authentication,Basic Authentication,Laravel 5.4,问题:我需要在使用Laravel 5.4创建的API上实现基本身份验证。由于我们需要在不使用数据库的情况下实现它(仅从config()获取凭据),因此我尝试创建一个注册的中间件,如下所示: <?php namespace App\Http\Middleware; class AuthenticateOnceWithBasicAuth { public function handle($request, $next) { if($request->g

问题:我需要在使用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);
    }
}

您可以拥有一组凭据,并尝试将输入与其中任何一个匹配,然后进行验证。老实说,您可以使用sqlite数据库轻松实现这一点。它需要最低限度的设置,您可以在5分钟内开始使用它。

您可以拥有一系列凭据,并尝试将输入与其中任何一个匹配并验证。老实说,您可以使用sqlite数据库轻松实现这一点。它需要最低限度的设置,您可以在5分钟内开始使用。

您可以在配置文件中将授权用户名和密码保存为一个集合。

config/myconfig.php

return [
        'authorized_identities' => collect([
             ['user1','password1'],
             ['user2','password2'],
             ...
        ]),
];
然后在你的中间件中

if(config('myconfig.authorized_identites')->contains([$request->getUser(),$request->getPassword()]))

您可以将授权用户名和密码作为集合保存在配置文件中。

config/myconfig.php

return [
        'authorized_identities' => collect([
             ['user1','password1'],
             ['user2','password2'],
             ...
        ]),
];
然后在你的中间件中

if(config('myconfig.authorized_identites')->contains([$request->getUser(),$request->getPassword()]))

可能他也不能使用sqlite数据库,因为这需要sqlite3。但是我同意数组的方法,应该足够简单,可能他也不能使用SQLiteDB,因为这需要sqlite3。但我同意数组方法,应该足够简单。另一个选择是将其放入单例中。我使用Lumen 5.6,config()返回数组,因此collect(config())是IMOIt在ConfigCacheCommand.php第71行中给出以下错误的最安全方法:您的配置文件不可序列化。在Macroable.php第76行:Method illumb\Support\Collection::\uuuu set\u state不存在。该错误意味着您的配置文件中有一个闭包,在编写上述代码时,配置文件中允许使用
collect()
方法,尝试删除它和/或删除您在配置文件中添加的任何闭包。另一个选项是将其放入单例中。我使用的是Lumen 5.6,config()返回一个数组,因此collect(config())是IMOIt在ConfigCacheCommand.php第71行中给出以下错误的最安全方式:您的配置文件不可序列化。在Macroable.php第76行:Method illumb\Support\Collection::\uuuu set\u state不存在。该错误意味着您的配置文件中有一个闭包,在编写上述代码时,配置文件中允许使用
collect()
方法,尝试删除它和/或删除您在配置文件中添加的任何闭包。此代码存在问题!只有在用户名和密码不匹配的情况下,才返回401。如果用户提供了有效的用户名,但密码无效,则会对其进行身份验证。您应该使用| |而不是&&此代码有问题!只有在用户名和密码不匹配的情况下,才返回401。如果用户提供了有效的用户名,但密码无效,则会对其进行身份验证。你应该用| |代替&&