Люмен пользовательская аутентификация без 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. Как это сделано аккуратно в люмене, я тоже не уверен.
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,
]);
}