2017-02-15 4 views
0

Im построил гибридное приложение в кордове и использовал laravel as api, но я немного смутился с Auth: api, я не мог найти ни одного тату, объясняющего то, что я хочу! Я хочу знать, как пользователь может пройти аутентификацию из приложения на своем телефоне до моего laravel api, насколько я знаю, я собираюсь использовать api_token (случайную строку), которую я собираюсь хранить в таблице Users, это прекрасно но как я могу аутентифицировать пользователя с ним и как заставить пользователя отправлять его со всеми запросами? могу ли я просто сохранить его в приложении и продолжать его отправлять? Я застрял с логином! как войти в систему в первый раз? Im Я буду использовать логин, предоставленный laravel, или создать новый для этого? helplaravel 5.2 building api Auth

ответ

1

За использование auth:api охранник в Ларавеле 5.2 см. https://andrew.cool/blog/64/How-to-use-API-tokens-for-authentication-in-Laravel-5-2 кажется довольно тщательным.

Теперь для остальных ваших вопросов:

Для входа в систему вам потребуется вызов API, который клиент будет использовать для входа, скажем:

POST logins

с телом:

{ 
    "email": "[email protected]", 
    "password": "password" 
} 

который в Laravel может представить в виде:

Route:post('logins', '[email protected]');

Теперь в методе MyApiController::login() вы будете проверять учетные данные, предоставленные email, password и если они совпадают с записью в базе данных, то вы будете реагировать с api_token. То, что api_token можно создать «на лету» (сделать его трудно сломать), или если у пользователя уже есть api_token, вы можете вернуть его. Это зависит от политики истечения срока действия, если вы хотите, чтобы логин также означал выход из системы на другие устройства и т. Д.

Если учетные данные не совпадают, вы ответите 400 Bad Request, и клиент в этом случае должен попытаться снова войти в систему ,

Для вашего другого вопроса, да, клиентское приложение должно помнить api_token и включать его в каждый вызов API, который ему нужен.

Позаботьтесь о том, чтобы Laravel искал api_token в определенном порядке, как видно из кода ниже (то есть Laravel 5.4). В ссылке, которую я вам дал выше, есть инструкции о том, как включить api_token.

public function getTokenForRequest() 
{ 
    $token = $this->request->query($this->inputKey); 

    if (empty($token)) { 
     $token = $this->request->input($this->inputKey); 
    } 

    if (empty($token)) { 
     $token = $this->request->bearerToken(); 
    } 

    if (empty($token)) { 
     $token = $this->request->getPassword(); 
    } 

    return $token; 
} 
+0

Спасибо, человек, если я это сделал, это может быть 'Auth :: guard ('api') -> user()' вернуть пользователя, прошедшего проверку подлинности? – brahimm

+0

Да, это будет, см. TokenGuard :: user(), чтобы увидеть подробности –

Смежные вопросы