Комментарии 7
Статья состоит из простыни кода и перевода названий методов на русский.
Расскажите лучше про ACL в Firebase.
Расскажите лучше про ACL в Firebase.
+3
В данной статье я хоте показать, насколько просто происходит работа с авторизацией/регистрацией пользователей используя Firebase.
Что касается ACL, то можно реализовать некое подобие средствами AngularJS используя сервис Auth, который поставляется с библиотекой AngularFire. Учитывая, что в текущем примере я использую ngBoilerplate и UI Router, вот пример из официальной документации:
Дополнительно можно хранить данные о пользователе в Firebase и настроить RBAC. Вот пример, как это можно реализовать.
Немного позже я могу описать процесс реализации RBAC с использованием AngularJS и Firebase. Пока я этого не делал, поэтому кидать дополнительные ссылки на документацию не буду)
Что касается ACL, то можно реализовать некое подобие средствами AngularJS используя сервис Auth, который поставляется с библиотекой AngularFire. Учитывая, что в текущем примере я использую ngBoilerplate и UI Router, вот пример из официальной документации:
// for ui-router
app.run(["$rootScope", "$state", function($rootScope, $state) {
$rootScope.$on("$stateChangeError", function(event, toState, toParams, fromState, fromParams, error) {
// We can catch the error thrown when the $requireAuth promise is rejected
// and redirect the user back to the home page
if (error === "AUTH_REQUIRED") {
$state.go("home");
}
});
}]);
app.config(["$stateProvider", function ($stateProvider) {
$stateProvider
.state("home", {
// the rest is the same for ui-router and ngRoute...
controller: "HomeCtrl",
templateUrl: "views/home.html",
resolve: {
// controller will not be loaded until $waitForAuth resolves
// Auth refers to our $firebaseAuth wrapper in the example above
"currentAuth": ["Auth", function(Auth) {
// $waitForAuth returns a promise so the resolve waits for it to complete
return Auth.$waitForAuth();
}]
}
})
.state("account", {
// the rest is the same for ui-router and ngRoute...
controller: "AccountCtrl",
templateUrl: "views/account.html",
resolve: {
// controller will not be loaded until $requireAuth resolves
// Auth refers to our $firebaseAuth wrapper in the example above
"currentAuth": ["Auth", function(Auth) {
// $requireAuth returns a promise so the resolve waits for it to complete
// If the promise is rejected, it will throw a $stateChangeError (see above)
return Auth.$requireAuth();
}]
}
});
}]);
app.controller("HomeCtrl", ["currentAuth", function(currentAuth) {
// currentAuth (provided by resolve) will contain the
// authenticated user or null if not logged in
}]);
app.controller("AccountCtrl", ["currentAuth", function(currentAuth) {
// currentAuth (provided by resolve) will contain the
// authenticated user or null if not logged in
}]);
Дополнительно можно хранить данные о пользователе в Firebase и настроить RBAC. Вот пример, как это можно реализовать.
Немного позже я могу описать процесс реализации RBAC с использованием AngularJS и Firebase. Пока я этого не делал, поэтому кидать дополнительные ссылки на документацию не буду)
+1
Мне вот интересно authUser.data, то что Вы записываете в локальное хранилище, это то что отдает firebase, а что именно он отдает, какие поля?
0
В переменной authUser лежат данные следующего вида:
{
"status": true,
"data": {
"provider": "password",
"uid": "simplelogin:11",
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.bUi5oKnJT1KIVALcmpaSYEHKkn5eQEolrvlXHjNMjC0",
"password": {
"email": "qweqew@mail.com",
"isTemporaryPassword": false
},
"auth": {
"provider": "password",
"uid": "simplelogin:11"
},
"expires": 1419625534
}
}
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Авторизация пользователей с AngularJS и Firebase