繁体   English   中英

流明HTTP基本身份验证

[英]Lumen HTTP Basic Authentication

我试图在Lumen项目中使用Laravel的HTTP基本身份验证。

routes.php文件,我设置的溃败,我需要验证auth.basic中间件:

$app->get('/test', ['middleware' => 'auth.basic', function() {
    return "test stuff";
}]);

bootstrap.php我已经注册了中间件和auth服务提供者:

$app->routeMiddleware([
    'auth.basic' =>  Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
]);

[...]

$app->register(App\Providers\AuthServiceProvider::class);

但是当我尝试通过访问http://lumen/test来测试路由时,我收到以下错误:

Fatal error: Call to undefined method Illuminate\\Auth\\RequestGuard::basic() in C:\\source\\lumen\\vendor\\illuminate\\auth\\Middleware\\AuthenticateWithBasicAuth.php on line 38

有谁知道如何获得基本认证的守卫代码?

谢谢。

遇到类似的问题,想为数据库中的用户使用基本的auth,所以最后写了我自己的AuthServiceProvider并在bootstrap / app.php中注册了

这是课程,也许它会帮助你。

<?php

namespace App\Providers;

use App\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\ServiceProvider;

class HttpBasicAuthServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Boot the authentication services for the application.
     *
     * @return void
     */
    public function boot()
    {
        $this->app['auth']->viaRequest('api', function ($request) {
            $email = $_SERVER['PHP_AUTH_USER'];
            $password = $_SERVER['PHP_AUTH_PW'];

            if ($email && $password) {
                $user = User::whereEmail($email)->first();
                if (Hash::check($password, $user->password)) {
                    return $user;
                }
            }

            return null;
        });
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM