Люмен пользовательская аутентификация без Eloquent

После публикации вопроса Lumen + Dingo + JWT нельзя создавать при создании Lumen + Dingo здесь, в SO, я получил хороший подробный ответ о том, как настроить такую ​​систему.

В его настройке есть небольшой пример аутентификации, который использует Eloquent. Теперь мы загружаем пользовательский фреймворк в Lumen, который имеет свои собственные модели и т. Д., Имеет собственную базу данных и т. Д.

То, что я не вижу, чтобы выяснить, это как полностью удалить Eloquent и выполнить аутентификацию, используя нашу собственную платформу.

Что я сделал до сих пор:

  • Удалены $app->withEloquent(); от нашего bootstrap\app.php

Другие правки я думаю, что нужно сделать, это редактирование config\auth.phpили, может быть, даже полностью удалив этот файл. Я не совсем уверен.

Наконец, в течение App\Api\v1\Controllers\AuthController@postLogin там сделан вызов validate функция. Эта функция должна взаимодействовать с моей структурой, а не через Eloquent. Как это сделано аккуратно в люмене, я тоже не уверен.

Git репо: https://github.com/krisanalfa/lumen-dingo

1 ответ

Решение

Вы можете прочитать это. Так что в вашем случае, в App\Api\v1\Controllers\AuthController@postLogin:

/**
 * Handle a login request to the application.
 *
 * @param \Illuminate\Http\Request $request
 *
 * @return \Illuminate\Http\Response
 */
public function postLogin(Request $request)
{
    try {
        $this->validate($request, [
            'email' => 'required|email|max:255',
            'password' => 'required',
        ]);
    } catch (HttpResponseException $e) {
        return response()->json([
            'message' => 'invalid_auth',
            'status_code' => IlluminateResponse::HTTP_BAD_REQUEST,
        ], IlluminateResponse::HTTP_BAD_REQUEST);
    }

    $credentials = $this->getCredentials($request);

    try {
        // Attempt to verify the credentials and create a token for the user
        // You may do anything you like here to get user information based on credentials given
        if ($user = MyFramework::validate($credentials)) {
            $payload = JWTFactory::make($user);

            $token = JWTAuth::encode($payload);
        } else {
            return response()->json([
                'message' => 'invalid_auth',
                'status_code' => IlluminateResponse::HTTP_BAD_REQUEST,
            ], IlluminateResponse::HTTP_BAD_REQUEST);
        }
    } catch (JWTException $e) {
        // Something went wrong whilst attempting to encode the token
        return response()->json([
            'message' => 'could_not_create_token',
        ], IlluminateResponse::HTTP_INTERNAL_SERVER_ERROR);
    }

    // All good so return the token
    return response()->json([
        'message' => 'token_generated',
        'token' => $token,
    ]);
}
Другие вопросы по тегам