Как я могу войти вручную с помощью API между двумя проектами laravel? - PullRequest
2 голосов
/ 02 августа 2020

У меня два проекта на основе Laravel, и я хочу войти в систему с помощью API, который предоставляет первый проект, и использовать эту аутентификацию во втором проекте.

в LoginController во втором проекте:


public function login(Request $request)
    {
        $login_response = Http::post('{first_project_login_api}', [
            'data' => [
                "email"     => $request->input('email'),
                "password"  => $request->input('password')
            ]
        ]);

        if ($this->attemptLogin($login_response)) {
            return $this->sendLoginResponse($request);
        }
    }

protected function attemptLogin(Response $response)
    {
        return $response->object()->status === 200;
    }

Во втором проекте мне не нужна база данных, потому что я хочу выполнить аутентификацию в первом проекте, но это кажется невозможным!

на самом деле мне нужно знать, как перезаписать attemptLogin() функция в LoginController.

Буду очень признателен, если кто-нибудь сможет мне посоветовать! ?

1 Ответ

1 голос
/ 02 августа 2020

Вместо использования входа в систему между приложениями я бы использовал ключи API. Самый простой способ начать - использовать простую Аутентификацию API .

Сначала создайте миграции для пользовательской таблицы.

Schema::table('users', function ($table) {
    $table->string('api_token', 80)->after('password')
        ->unique()
        ->nullable()
        ->default(null);
});

Чтобы получить ключи, установите их на пользователь либо в Tinker, либо в команде, либо в создании.

$user->api_token = Str::random(60);
$user->save();

Защитите свои маршруты API с помощью промежуточного программного обеспечения.

Route::middleware('auth:api')->group(function() {
    // your routes
});

Вызов вашего API так же просто, как.

response = $client->request('POST', $yourRoute, [
    'headers' => [
        'Authorization' => 'Bearer ' . $yourToken,
        'Accept' => 'application/json',
    ],
]);

Это довольно простая c установка, для производства или продвижения вам следует посмотреть Sanctum или Passport . Это всего лишь хорошее начало, с которого, как мне кажется, вы основываете свой вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...