Базовая аутентификация HTTP Lumen

Я пытаюсь использовать базовую HTTP-аутентификацию Laravel в проекте Lumen.

На routes.php В файле я установил промежуточное программное обеспечение auth.basic для маршрута, который мне нужен для аутентификации:

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

На bootstrap.php Я зарегистрировал промежуточное программное обеспечение и поставщика услуг аутентификации:

$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

Кто-нибудь знает, как можно получить код охранника для базовой аутентификации?

Благодарю.

2

Решение

Столкнулся с подобной проблемой, хотел использовать базовую аутентификацию для пользователей в базе данных, поэтому в итоге написал свой собственный 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;
});
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]