Проверка авторизхации пользователя при старте
Ситуация такая. При авторизации я записываю в куку token, а в свой сервис Auth имя пользователя и его id.
Куда лучше вставить проверку при следующем открытии страницы? Т.е. пользователь отклыл сайт и у него есть token. Однако он уже может быть невалиден и мне нужно это проверить (и если он валиден, то вернуть с сервера ID и имя пользователя). Как вариант делать это в моем сервисе Auth при его создании. Но может это нужно делать в config или еще каком месте? Как это делается по-нормальному (т.е. по правильному)? |
можно слушать событие роутинга в run или конфиге:
$rootScope.$on('$routeChangeStart', function (event, next) { Auth.loginCheck(next); }); |
Tek,
Я плохо объяснил :) Когда я писал про открыл "страницу сайта", то я имел ввиду следующий процесс: Пользователь открыл сайт, авторизовался. Потом закрыл БРАУЗЕР. На следующий день открыл БРАУЗЕР и в нем открыл сайт. Вот когда он вновь зашел на сайт, то нужно проверить валидный у него токен в кукисах или нет и при этом вернуть барузеру данные о пользователе, если токен валидный. А насколько я понимаю, ваше решение позволяет проверять авторизацию при переходе между страницами сайта. Такого не нужно. Валидность токена проверяется при входе на сайт и все. При переходе между страницами проверять не нужно. |
Эм, если вы говорите про rest модель, то это работает немного не так. Rest - протокол без состояний поэтому на любой запрос на бэкэнд отправляется token, если ключ не валидный бэк кидает ошибку. В конфиге вешается перехватчик который следит смотрит что не пришел 401 (или 511 - обычно) ответ. Если пришел просим пользователя перелогиниться.
|
Схема именно такая и планируется (не всё еще сделал). Однако на клиенте нужно знать пользователь активен или нет. И если нет, то показывать/скрывать некоторые пункты меню.
Хотя, если подумать, то возможно на клиенте и действительно ничего кроме токена не нужно будет. |
ну если на клиенте не ведется тотальное кэширование всего и вся (если ведется то непонятно зачем), то при загрузке приложения будет как минимум 1ин запрос, он то и даст понять статус пользователя.
|
Shasoft,
На клиента отсылаете элемент активности Типично их несколько К примеру Фразы: Привет Ник, Либо привет Гость, Прописывают так же, достаточно часто стартовый ява-скрипт параметров в хидере var GroupID = 'User' или var GroupID = 'Guest' Очевидно в главном меню либо Регистрация и Войти - либо Выход И т.д. |
Deff,
так весь вопрос когда запрашивать этот элемент активности при заходе на сайт. Т.е. есть ли специальное место для такого в angular или можно где попало это делать. |
Часовой пояс GMT +3, время: 13:53. |