2017-02-13 3 views
1

Я использую AngularJs и Laravel 5.4TokenGuard класс всегда нужно api_token

В охранником по умолчанию, я изменил web guard к api. Наконец, это выглядит ниже.

'defaults' => [ 
    'guard' => 'api', 
    'passwords' => 'users', 
], 

когда я отправить запрос, используя имя пользователя и пароль от углового Js .... Я всегда получаю недействителен, потому что ..

TokenGuard класса имеет метод validate который ожидает api_token значения, но я на страницу входа.

Я предполагаю, что для того, чтобы получить токен, мне нужен $this->guard(web) в методе входа?

Правильно ли это или я что-то упускаю?

ответ

0

По умолчанию все маршруты, определенные в routes/api.php, имеют промежуточное ПО api, как определено в app/Providers/RouteServiceProvider::mapApiRoutes(). Поэтому вам всегда нужно пройти api_token.

Что вы можете сделать, это, в ваших API маршрутов, определить логин маршрут как этот

Route::post('login', 'api\[email protected]'); //out of the group 

И пост от AngularJS

$http.post({ 
    url: 'http://localhost/api/login', 
    data: $scope.userda, 
    headers: { 
     Authorization: '' 
    } 
}).then(...) 

Затем определите все другие маршруты в группе с auth:api

Route::group(['middleware' => 'auth:api'], function(){ 
    //Other routes here 
}); 

В угловом режиме установите заголовки авторизации с помощью значение api_token. Поэтому перед входом в систему он будет пустым, и после входа в систему он будет иметь значение пользователя api_token.

+0

У вас отсутствует закрывающая одинарная кавычка в вашей цитате здесь 'auth: api', а во-вторых, как можно подключить логин в auth: api middleware? В настоящий момент токена нет. Мне нужен токен, используя имя пользователя и пароль на моей странице входа. Только тогда я смогу совершать дальнейшие звонки с использованием токена. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация о моем вопросе. –

+0

Мой логин для входа не входит в группу. – EddyTheDove

+0

Как я могу войти с помощью «TokenGuard»? Класс TokenGuard имеет метод Validate, которому нужен токен ... Но мой запрос на вход еще не получил маркер. Я имел в виду, что вы будете писать в методе входа в контроллер, чтобы получить имя пользователя и пароль, проверенные с помощью tokenguard? –