Laravel Auth с использованием сторонней аутентификации - PullRequest
1 голос
/ 23 октября 2019

Я создаю приложение, которое использует стороннюю базу данных аутентификации. Я создал пользовательский пакет композитора для "перехвата" запроса POST на /login. Все работает отлично - я могу вернуть объект пользователя и сохранить его в своей базе данных (laravel).

Сейчас я нахожусь в точке, где я хочу перенаправить на домашнюю страницу и делать "вещи"». Я хотел бы максимально использовать нативный Laravel Auth, если смогу.

Например, на домашней странице я делаю это:

$foo = auth()->user()->foo->where('active', 1);

Не удивительно, поскольку я не использую собственный метод аутентификации Laravel, auth()->user() возвращает null. Как только мой пользователь будет создан / найден в моей базе данных, можно ли вернуться к методам Laravel auth()?

Спасибо за любые предложения!

РЕДАКТИРОВАТЬ

Читая документацию, это похоже на направление, в котором я должен идти , но у меня не получается понять, как подключить / зарегистрировать мой пользовательский пакет (я думаю) ...

РЕДАКТИРОВАТЬ 2

Я буду продолжать обновлять это, поскольку я чувствую, что я делаю какие-то успехи в надежде, что это не только поможет мне, но и поможет другим лучше понять, чтоЯ пытаюсь достичь. В конечном итоге помогите другим, которые могут попытаться сделать то же самое.

Я обновил свой app/Providers/AuthServiceProviderAuthServiceProvider как таковой:

use My\Package\MyThirdPartyServiceProvider;


...


Auth::provider('foo', function ($app, array $config) {
        // Return an instance of Illuminate\Contracts\Auth\UserProvider...

    return new MyThirdPartyServiceProvider($app->make('foo.connection'));
});

Я также обновил свой файл config/auth:

'providers' => [
    'users' => [
        'driver' => 'foo',
        'model' => App\User::class,
    ]

1 Ответ

1 голос
/ 23 октября 2019

Как вы упомянули, документация предлагает реализовать пользовательский провайдер. Следующие шаги более или менее описывают, как вы будете решать это более подробно.

  1. Создание или редактирование поставщика услуг Вы можете создать нового поставщика услуг, запустив

php artisan make:provider CustomAuthServiceProvider

В методе boot вашего поставщика услуг вам необходимо настроить нашего поставщика проверки подлинности (который будет реализован на шаге 4).
    public function boot()
    {
        Auth::provider('custom-auth', function ($app, array $config) {
            return new CustomAuthProvider();
        });
    }
Обновите конфигурацию auth.php, чтобы использовать сервис-провайдера, который мы зарегистрировали на шаге 2
'providers' => [
    'users' => [
        'driver' => 'custom-auth',
    ],
],
Создайте сам класс CustomAuthProvider и реализуйте интерфейс UserProvider
class CustomAuthProvider implements UserProvider
{
    public function retrieveById($identifier) {
        // Retrieve a user by their unique identifier.
    }

    public function retrieveByToken($identifier, $token) {
        // Retrieve a user by their unique identifier and "remember me" token.
    }

    public function updateRememberToken(Authenticatable $user, $token) {
        // Update the "remember me" token for the given user in storage.
    }

    public function retrieveByCredentials(array $credentials) {
        // Retrieve a user by the given credentials.
    }

    public function validateCredentials(Authenticatable $user, array $credentials) {
        // Validate a user against the given credentials.
    }
}
...