AngularJS и аутентификация Firebase

Я хотел бы добавить механизм аутентификации в свое приложение AngularJS с бэкэндом Firebase. Требования просты:

  • Аутентифицированные пользователи должны иметь доступ к любой странице.
  • Если неавторизованные пользователи переходят на /some_page (любую страницу, кроме /login), они должны быть перенаправлены на /login. Как только они введут правильные учетные данные, они должны быть перенаправлены обратно на /other_page.

Возможное решение, описанное здесь, предполагает следующее:

Мое решение предполагает следующее поведение на стороне сервера: для каждого вызова /resources/*, если пользователь не авторизован, отвечайте на статус 401.

Но я не уверен, можно ли применить такое поведение при использовании Firebase в качестве серверной части.

Будем признательны за любую помощь и/или примеры реализации такой интеграции AngularJS+Firebase!


person Misha Moroshko    schedule 21.02.2013    source источник


Ответы (3)


Одним из решений является маршрутизация на стороне клиента с помощью службы $route.

Когда пользователь проходит аутентификацию через Firebase, сохраните некоторую запись об этом на клиенте, например, в локальном хранилище, каком-нибудь всеобъемлющем контроллере или в вашем собственном Angular service (мой предпочтительный вариант).

В вашем контроллере маршрутизации, если пользователь аутентифицирован, перенаправьте на /some_page, в противном случае перенаправьте на /login и отслеживайте $location куда намеревался попасть пользователь.

Если, с другой стороны, вы хотите выполнить маршрутизацию со своим сервером, вы можете использовать решение, на которое вы ссылаетесь по ссылке заставить ваш сервер генерировать токены аутентификации Firebase.

person bennlich    schedule 21.02.2013
comment
Спасибо за Ваш ответ. Похожий вопрос - person Misha Moroshko; 22.02.2013
comment
Привет, Беннлих, ты имеешь в виду хранить информацию об аутентификации, возвращенную из FirebaseAuthClient, в службе Angular ($ rootScope). Значит, в следующий раз мы просто получим информацию из $rootScope, не вызывая FirebaseAuthClient? - person vzhen; 09.06.2013
comment
@vzhen см. мой ответ на ваш вопрос SO здесь: «angularjs должен ли я использовать данные rootscope, возвращаемые из firebase»> stackoverflow.com/questions/17026374/. В общем случае лучше обмениваться данными через службу, чем через $rootScope (в целях модульности и во избежание случайной перезаписи ваших свойств $rootScope). - person bennlich; 10.06.2013

Недавно у меня было такое же требование, и я наткнулся на этот пост в блоге. http://www.42id.com/articles/firebase-authentication-and-angular-js/

В нем объясняется настройка приложения Angular JS, которое взаимодействует с Firebase. Также включены способы аутентификации у провайдеров OAuth, таких как Google+ и Github, с использованием API Firebase, маршрутизация на основе статуса аутентификации, сохранение информации профиля пользователя в Firebase и настройка правил безопасности в Firebase для защиты пользовательских данных.

person BigMegaladon    schedule 14.04.2015

Если вы используете Firebase Simple Login (вместо создания токенов аутентификации на своих собственных серверах), вы можете увидеть, как определить состояние входа на стороне клиента здесь: Отображение текста после входа

person Andrew Lee    schedule 22.02.2013