{{isAuthenticated$ | async }}
console.log(this.isAuthenticated$)
- это бессмысленно. Выводить поток и потом выковыривать из него хранимое значение не надо.this.isAuthenticated$.subscribe(v => console.log(v))
getUser() {
return this.http.get('/server/api/userService').pipe(
tap(data => this.isAuthenticated$.next(!!data['login'])),
tap(data => {
console.log('user', data);
console.log('isAuthenticated', !!data['login']);
}),
);
}
c
- это ссылка, когда вы ей присваиваете новый объект предыдущее значение теряется.this
и никак больше.c
будет сохранена ссылка на созданный объект, но не раньше.он ищет эту переменную выше в глобальной области видимости, и в конце то концов полюбому найдет, к чему это было сказано?
let a = 5;
function func() {
a = a + 1;
console.log(1);
}
func
изменится переменная a
, func
"замыкает" a
. Ссылка на a
считается живой, если возможен вызов func
После добавления такого кода получаю в цикле ошибку
такой способ помещения метода запроса в разметку, плохая идея
Вот кусок реального легаси кода, причем не самого навороченного
тут jwt помогает пройти аутентификацию, но за данными юзера все равно лезут в базу и передают их дальше в запрос. Каждый раз.
По идее токен должен так же содержать данные для авторизации, а обращение к бд будет только в фазе создания (или рефреша) токена, иначе зачем вообще токен.
Сервис может вообще ничего не знать про существование базы юзеров.
Видите ли, есть два основных типа аутентификации и авторизации юзера, криптографический (распознавание отпечатка) и реестровый (ищем запись сессии), нет смысла их смешивать.