Laravel объединяет паспортную аутентификацию и обычную аутентификацию - PullRequest
1 голос
/ 12 марта 2019

Как объединить паспортную аутентификацию и обычную аутентификацию laravel?

Я хочу, чтобы пользователь вошел на страницы веб-промежуточного и api-промежуточного программного обеспечения. Маршрут входа в систему находится в api-middleware. В настоящее время я настроил проверку подлинности Passport, и она отлично работает для всех маршрутов промежуточного программного обеспечения API. Как сделать так, чтобы пользователь вошел в веб-промежуточное ПО?

Редактировать # 1

Что я делаю:

Код входа

$http = new \GuzzleHttp\Client();

    try {
        $response = $http->post(config('services.passport.login_endpoint'), [
            'form_params' => [
                'grant_type' => 'password',
                'client_id' => config('services.passport.client_id'),
                'client_secret' => config('services.passport.client_secret'),
                'username' => $args['email'],
                'password' => $args['password']
            ]
        ]);

        $user = User::where('email', $args['email'])->first();

        Auth::guard('web')->login($user);
        return [
            "token" => $response->getBody()->getContents(),
            "user" => $user
        ];

    } // ...

Где-то в некотором маршруте промежуточного программного обеспечения

return auth()->check() ? "logged in" : "not logged in";

возвращает "не авторизован"

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

В идеале вы не должны этого делать, так как проверка подлинности паспорта предназначена для отдельного приложения, взаимодействующего с API, а предварительная доставка laravel предназначена для MVC, это отдельные пользовательские сеансы.

Но если вы знаете, что делаете,либо вызовите Auth::login($user); при входе пользователя через API, либо сгенерируйте маркер паспорта при входе пользователя через веб-интерфейс промежуточного программного обеспечения, в зависимости от того, какой вход произойдет первым ...

Помните Auth::login($user); создает сеанс пользователя и устанавливает файлы cookie дляобратитесь к этому сеансу ... Таким образом, вы создаете для себя новую проблему при выходе из системы, есть два места для выхода из системы ... поскольку технически пользователь входит в систему дважды, с токеном паспорта и файлом cookie, ссылающимся на его сеанс...

0 голосов
/ 12 марта 2019

Если вам нужно зарегистрировать существующий пользовательский экземпляр в вашем приложении, вы можете вызвать метод входа в систему с пользовательским экземпляром.

Auth::login($user);

Вы также можете использовать метод guard ():

Auth::guard('web')->login($user);

См. Документацию здесь для получения дополнительной информации: https://laravel.com/docs/5.8/authentication#authenticating-users

...