Есть приложение на Angular, встретился с такой проблемой, когда авторизовываемся за пользователя на странице логина, нас перекидывает на главную страницу, где есть некоторые данные текущего пользователя. Данные вытягиваются с помощью factory get запросом, следующим образом - $resource('api/users/'+token+'/resources'), если вернуться на страницу логина, и зайти под другим пользователем, то на главной странице остаются данные от прошлого пользователя, до тех пор пока не обновить страницу. Я так понимаю, это происходит из-за того что factory создает объект при запуске приложения, и возвращает его потом каждый раз. Как это можно исправить, чтобы при заходе за другого пользователя, можно было получить новый объект?
Фабрика это синглтон. в ней выполняется get запрос с помощью сервиса $http.
Я видимо неправильно реализовал механизм аутентификации. При логине я посылаю логин и пароль на сервер, с сервера получаю ответ в виде логина и токена, сохраняю эти данные в кукисах. Когда надо послать запрос к серверу посылаю запрос с токеном и получаю данные. При переходе на какую либо страницу проверяю, есть ли в кукисах информация о пользователе(т.е залогинен ли он), если нету то не пускаю его на эту страницу.
SheldonCoop: фабрика это не сингелтон, фабрика это фабрика. Это штука которая пораждает сервисы. Ее задача - сделать сервис по запросу. Выполняется она один раз потому что контейнер зависимостей ($injector) просит это один раз.
Далее мы работаем исключительно с продуктом фабрики - сервисом. И запросы делают сервисы. Почувствуйте разницу.
Механизм аунтентификации вы сделали... свиду правильно (единственно что не понятно - куки и так с каждым запросом будут уходить и лучше уж в local storage тогда токен пихать, тогда мы от csrf хотя бы защищаться не будем). У вас проблемы не с ним, а с тем как вы управляете в принципе состоянием приложения. У вас сервисы хранят какое-то состояние, а стало быть при вылогинивании вы должны это состояние дропать (явно вызвав метод сервиса).