Добрый день!
Вчера решил подключить к Laravel JWT и переписать авторизацию. До этого использовалась нативная авторизация "из коробки".
Итак, есть роуты:
Route::get('/', ['uses' => 'AuthController@index']);
Route::post('/login', ['uses' => 'AuthController@login']);
Route::get('logout', 'AuthController@logout');
Route::get('/ap', ['uses' => 'APController@index']);
Первый выводит форму входа, вот код Vue, который "обрабатывает" ее:
export default {
data () {
return {
login: '',
password: ''
}
},
methods: {
auth () {
axios.post('/api/login', { login: this.login, password: this.password })
.then(function (response) {
if (response.data.success) {
Cookies.set('Token', 'Bearer ' + response.data.data.token);
axios.defaults.headers.common['Authorization'] = 'Bearer ' + response.data.data.token;
console.log('Токен выдан')
}
console.log(response.data.data.token);
})
}
}
}
Т.е. я сохраняю JWT в cookies. Авторизация проходит, кука сохраняется. Теперь, после авторизации я хочу перейти по адресу
mysite/ap (последний роут, метод GET). Код метода index:
try {
if (! $user = JWTAuth::parseToken()->authenticate()) {
return response()->json(['user_not_found'], 404);
}
} catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
return response()->json(['token_expired'], $e->getStatusCode());
} catch (Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
return response()->json(['token_invalid'], $e->getStatusCode());
} catch (Tymon\JWTAuth\Exceptions\JWTException $e) {
return response()->json(['token_absent'], $e->getStatusCode());
}
return response()->json(compact('user'));
Однако я получаю JWTException
The token could not be parsed from the request
В мануалах сказано, что я должен передавать Authorization header при запросе вида "Authorization: Bearer + myToken". Добавил следующий код в resources\assets\js\app.js
import VueResource from 'vue-resource';
import Cookies from 'js-cookie';
Vue.use(VueResource);
Vue.http.headers.common['Authorization'] = 'Bearer ' + Cookies.get('Token');
Пересобрал (npm run dev), однако header не вставляется и как результат - после успешной авторизации я не получаю доступ к части сайта, где требуется передать JWT по причине того, что я не могу вставить Authorization header, он не вставляется.
Поставил ModHeader для Chrome, прописал там header с токеном, выданным после авторизации - все работает.
И собственно вопрос: каким образом можно добавить Authorization header в GET-запрос? Что я делаю не так? :(
Заранее благодарен за ответы.