Итак, я работаю над приложением angular2 и пытаюсь создать JWT после входа в систему, чтобы получить информацию профиля пользователя. Я могу успешно войти в систему, и именно тогда я создаю токен. После входа в систему я направляю пользователя на страницу профиля, и именно там я вызываю свой api, чтобы получить информацию о пользователе. Все это работает только после входа в систему и обновления до страницы.JWT в localStorage работает только после обновления страницы
this.auth_service
.Login(this.email, this.password)
.subscribe(
data => {
this.global_events.change_nav_bar.emit(true)
console.log('logged in successfully: ' + data)
this.router.navigate(['/profile'])
})
// auth_service выше вызывает этот метод
Login(email, password): Observable<boolean>
{
return this.http
.post('/api/login', JSON.stringify({email: email, password: password}), this.Get_Headers('no_auth'))
.map(Handle_Response)
function Handle_Response(response: Response)
{
let token = response.json() && response.json().token
if(token)
{
this.token = token
localStorage.setItem('current_user', JSON.stringify({ email: email, token: token }))
return true
}
else
return false
}
}
// Тогда в моем профиле компонента я это делаю. Я экспериментировал с разным временем ожидания.
ngOnInit(): void
{
this.global_events.change_nav_bar.emit(true)
setTimeout(() => this.Get_User_Data(), 10000)
}
кода выглядит хорошо, вы получаете какие-либо ошибки? токен хранится в локальном хранилище, вы его проверили? что делает функция get_User_data(), ищет локальное хранилище? –
this.Get_User_Data() вызывает мой api/profile, который использует jwt для доступа к маршруту «router.get ('/ api/profile», auth, Get_User) ». Ошибка, которую я получаю, является несанкционированной ошибкой 401, когда я вызываю this.Get_User_Data(). Что вы подразумеваете под маркером, хранящимся в localStorage? Я имею в виду, что это должно быть, если оно работает на обновление правильно? –
Ошибка 401 означает, что пользователь не авторизовался, пользователь разрешил, чтобы u не передавал токен аутентификации в этом запросе api. убедитесь, что u r получает токен в этом методе get_user_data(), и вы отправляете его с запросом. иначе вы не получите ошибку 401. –