У меня есть приложение angular, которое использует Restangular
и ui.router.state
.
Это то, что я сейчас делаю
-
У меня есть конечная точка/токен, которая принимает имя пользователя/пароль и дает вернуть токен-носитель и некоторую пользовательскую информацию.
-
При успешном входе я сохраняю userinfo и токен в глобальном var, user.current, и я также устанавливаю заголовки Defaultangular по умолчанию для включения токена-носителя:
Restangular.setDefaultHeaders({Авторизация: "Носитель" + data.access_token});
-
Когда пользователь хочет получить доступ к маршруту с требуемым атрибутом: Auth = true (установленным в маршрутизаторе-провайдере как пользовательские данные, например Свойства маршрута routeProvider), я проверяю user.current, чтобы узнать, установлен ли его набор.
а. Если user.current установлен, перейдите на маршрут.
б. Если user.current имеет значение null или если токен будет истек (в зависимости от времени), отправьте их в /login
Проблемы/вопросы
-
Если я
Ctrl+R
, я теряю информацию о пользователе, и пользователь должен снова войти в систему.а. Должен ли я сэкономить токен-носитель или учетные данные в файле cookie или что-то еще, и попросить его воспользоваться функцией пользователя в случае, если
user.current == null
? -
Я даже подхожу к этому правилу? Кажется, что буквально 100% людей, использующих AngularJS, хотели бы сделать, но я не могу найти пример, который согласуется с моей ситуацией. Похоже, что angular будет иметь механизмы, встроенные для обработки некоторых из этих бизнес-маршрутов auth...
-
Когда мне нужно получить новый токен/проверить текущий? Я просто позволю кому-нибудь с devtools установить что-то вроде
isAuthorized = true
, чтобы они могли получить /admin/importantThings, но затем разрешить вызовы /api/important, потому что у них нет действительного токена на предъявителя, или я должен проверить, что они имеют действительный токен, прежде чем я даже позволю им добраться до этого маршрута?