Сначала установите паспорт 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/
Что касается внешнего интерфейса, как только вы отправили токен пользователя из запроса, он действительно зависит от того, какой язык / инфраструктуру вы используете.