laravel auth с ответом API другой базы данных

У меня такой же случай с пользовательской аутентификацией laravel, основанной на ответном вызове API. Нужен ответ, пожалуйста, поскольку в этом посте нет ответа.

1 ответ

Сначала установите паспорт Laravel.

После этого создайте пользовательский контроллер и проложите к нему маршрут API без какого-либо промежуточного программного обеспечения.

public function login(Request $request)
    {
        $details = $request->only('email', 'password');
        if (Auth::attempt($details)) {
            $user = Auth::user();
            if ($user->verified) {
                $user->token = $user->createToken('App')->accessToken;
                return response()->json([
                    'user' => $user
                ], $this->successful_response_code);
            }
            return response()->json([
                'error' => 'not_verified'
            ], $this->failure_response_code);
        }
        return response()->json([
            'error' => 'details_incorrect'
        ], $this->unauthorized_response_code);
    }

Удалите проверенный пользователем чек сверху (на мобильном телефоне сложнее набрать код)

Так что теперь пользователь отправляет на этот маршрут имя пользователя и пароль, а взамен получает свой пользовательский объект с токеном доступа, который можно использовать на любых ваших маршрутах, которые защищены с помощью auth:api промежуточное программное обеспечение.

Просто делайте запросы к нужному маршруту, используя токен пользователя в качестве заголовка. Authorization: Bearer ******(token)

Вот пример маршрута.


Route::namespace('API\V1')->group(function () {
    Route::namespace('Auth')->group(function () {
        Route::post('login', 'LoginController@login');
        Route::post('register', 'RegisterController@register');
        Route::post('verify', 'VerificationController@verify');
    });
    Route::middleware('auth:api')->group(function () {
        Route::namespace('User')->group(function () {
            Route::get('users', 'UserController@index');
        });
        Route::namespace('Conversation')->group(function () {
            Route::get('conversations', 'ConversationController@index');
            Route::post('conversations', 'ConversationController@store');
            Route::patch('conversations/{conversation}', 'ConversationController@update')->middleware('can:update,conversation');
        });
    });
});

Вот репозиторий, который вы можете просмотреть через https://github.com/michaelmano/laravel-login/

Что касается внешнего интерфейса, как только вы получите токен пользователя, отправленный обратно из запроса, это действительно зависит от того, какой язык / среду вы используете.

Другие вопросы по тегам