Делаю spa на angular 4. Суть в том, что у меня в локалсторадже хранится токен авторизации. У меня есть компонент меню, где при определенном состоянии нужно показывать кнопку Login или Logout. Я так понимаю, мне нужно проверять через компонент наличие токена в хранилище. Подскажите как это реализовать, хотелось бы посмотреть на реализацию такой штуки. Возможно у кого-то есть пример такой проверки.
Алексей Ярков, я без проблем смогу прочитать значение с хранилища, но есть одна проблема. Ниже напишу проблему более детальней.
Мы можем сделать так типа пользователь зашел и методе login ставим флаг на переменную isAuthenticated = true. если пользователь вышел, то в методе logout ставим флаг false. Потом в компонент менюшки мы можем получать эти значения и в шаблоне меню, через ngIf по этим флагам показывать нужную кнопку. Так будет все работать норм, но есть одно но, что если по истечению времени у нас пройдет время, и токен протухнет. Нас выбросит с приложения, но состояние менюшки не изменится, поэтому я решил, что нужно делать полюбому проверку на наличие токена. Но это проверка должна быть как подписка, чтобы в случаи любого изменения хранилища, данные сразу передавались в компонент.
Я бы не рекомендовал такое хранить в локалсторадже. Не безопасно. Если злоумышленник его узнает, то у него будет все для взлома. Юзайте куки, сессии и прочие прелести для нормальной авторизации.
JackShcherbakov, странно но в интернете много примеров именно где токен хранится в локалсторедже. Если хранить токен в куки, то всеравно нужно как-то подписыватся на них, что избежать проблемы которую описал выше.
Я бы не рекомендовал такое хранить в локалсторадже. Не безопасно. Если злоумышленник его узнает, то у него будет все для взлома. Юзайте куки, сессии и прочие прелести для нормальной авторизации.
Куки как раз ещё хуже, т.к. значение из local storage отправляется кастомным хедером и не нужно делать защиты от csrf, т.к. запросы отправляются только через твою обёртку. А узнать можно и куки и что угодно. Если я чего-то не знаю и есть уязвимости позволяющие без xss читать local storage, буду рад изучить.
Да там и у того и у того есть минусы, но вроде сейчас действительно советуют LocalSorage с https юзать, посмотрите статьи на медиуме и может прям на сайте oAuth, там вродн были.
А что будет если токен истечет, допустим прошло 60 мин и все токен не действителен. Как будет тогда выглядеть меню если до этого мы сделали удачную авторизацию, а потом токен истек?
kachurinets, при очередном запросе, сервер отвечает 401(см функцию handleError), токен удаляется из хранилища, переменная устанавливается в false и роутер редиректится на страницу логина, меню сответственно изменяется благодаря магии ангуляра.