2015-01-14 2 views
2

У меня есть приложение angularjs с негласной страницей входа в систему. поэтому после входа в систему вы перенаправлены на угловое приложение. я установил $ httpProvider, чтобы любой запрос, который был выполнен в результате 401, перенаправит пользователя на страницу входа.сохранить информацию пользователя в кэше через приложение

тем временем, пока пользователь находится в приложении, я бы хотел, чтобы информация о пользователе была доступна для приложения в любое время. например, имя пользователя, некоторые настройки и т. д., в идеале я бы имел эту информацию до загрузки начального представления. и в идеале я бы только раздобыл эту информацию один раз.

Каков наилучший способ сделать это? я мог бы использовать службу для кэширования пользователя между контроллерами/представлениями, но как я могу настроить его так, чтобы он имел необходимую информацию до того, как пользователь будет показывать начальное представление (так как некоторые данные необходимы для отображения этого начального вида)?

+0

Итак, вы говорите, что если вы обновите страницу, вы будете перенаправлены на страницу входа, даже если вы вошли в систему? –

+0

no - сервер отображает приложение для всех зарегистрированных пользователей. поэтому, если вы обновляетесь, и вы все еще вошли в систему, вы останетесь в приложении. но если ваш сеанс истекает, а затем вы обновляетесь, вы будете перенаправлены на страницу входа * сервером * (тогда как запросы, которые возвращают 401, будут перенаправлены на страницу входа * клиентом *) – hackerhasid

+0

Вы можете просто использовать сервис/завод , Служба будет выполнять запрос Ajax для извлечения данных и последующего их хранения. Услуги - это синглтоны, поэтому данные должны быть доступны между контроллерами. Это также означает, что запрос Ajax будет возникать только один раз. –

ответ

0

Вы используете ngRoute или uiRouter? Воспользуйтесь функцией resolve, которая позволяет вам решать обещания до изменения маршрута/изменения состояния. Используйте сервис, как было предложено выше. Дайте ему метод, который разрешает обещание после того, как вы проверили, что вы вошли в систему.

После получения ответа разрешите обещание. Затем «Угловая» создаст экземпляр контроллера и выполнит переход к маршруту, и вы сможете снова ввести услугу и отобразить страницу, зная, что контент готов.

0

При успешном входе в систему вы можете сохранить данные пользователя в локальном хранилище. вы могли бы получить информацию в любом месте в угловом пространстве, введя в свой код $ localstorage

Смежные вопросы