我想在AngularJS和FireBase(管理员,用户)中进行基于角色的简单授权。
我进行了基本授权和路由(请看下面的3个文件)。

我在github和repository中找到了article,但是代码对我来说太难了。
有更容易的方法吗?如何更改代码以添加此功能?
我很高兴能链接到对我有帮助的文章和存储库。



app.js

var app = angular.module( 'journalApp', [ 'firebase', 'ngRoute' ] );

app.constant( 'FIREBASE', '<FIREBASE URL>' );

app.config( [ '$routeProvider', '$locationProvider', function( $routeProvider, $locationProvider ) {

    $routeProvider.when( '/login', {
        templateUrl: 'views/login.html',
        controller: 'loginCtrl',
        controllerAs: 'loginCtl'
    } );

    $routeProvider.when( '/logout', {
        templateUrl: 'views/login.html',
        controller: 'loginCtrl',
        controllerAs: 'loginCtl',
        resolve: {
            "logout": [ "authService", function( authService ) {
                authService.signOut();
            }]
        }
    } );

    $routeProvider.when( '/', {
        templateUrl: 'views/dashboard.html',
        resolve: {
            "currentAuth": [ "authService", function( authService ) {
                var auth = authService.auth();
                return auth.$requireSignIn();
            }]
        }
    });

    $routeProvider.otherwise( {
        redirectTo: '/'
    } );

    $locationProvider.html5Mode( true );

} ] );

app.run( [ "$rootScope", "$location", function( $rootScope, $location ) {
    $rootScope.$on("$routeChangeError", function(event, next, previous, error) {
        if (error === "AUTH_REQUIRED") {
            $location.path("/login");
        }
    });
} ] );




loginCtrl.js

app.controller( 'loginCtrl', [ 'authService', function( authService ) {
    var self = this;

    self.signUp = function() {
        authService.createUser(self.email, self.password);
    };

    self.logIn = function() {
        authService.authUser(self.loginEmail, self.loginPassword);
    };

    self.signOut = function() {
        authService.signOut();
    };
}]);




authFactory.js

app.factory( 'authService',  [ '$firebaseAuth', '$window', function( $firebaseAuth, $window ) {

    var authService = {};

    var auth = $firebaseAuth(firebase.auth());

    authService.createUser = function(email, password) {
        auth.$createUserWithEmailAndPassword( email, password );
    };

    authService.authUser = function( email, password ) {
        auth.$signInWithEmailAndPassword( email, password ).then(function( user ) {
            $window.location.href = "/";
        }, function( error ) {
            var errorCode = error.code;
            var errorMessage = error.message;
            console.info( "Error in authUser - errorCode: " + errorCode + ". errorMessage: " + errorMessage);
        });
    };

    authService.signOut = function() {
        auth.$signOut();
    };

    authService.auth = function() {
        return auth;
    };

    return authService;
}]);

最佳答案

关于如何制作有很多信息。



Stackoverflow的文章/指南/答案


Article about advanced data modelling and role based authorization
Article about role based routing in AngularJS(通过ng-mm-route
Little guide about developing a permission-based authorization system in a AngularJS app
Article about authorization and role based permissions in AngularJs
Good solution from StackOverflow
Recommendation from StackOverflowangular permission


有用的资料库


Basic user profile management
Demo to show how to use Angular + Firebase + Google Material Design together
Simple Login (Facebook, Twitter, Google, Github) and Chat Application with Angular and Firebase
Role based authorization for Firebase
Role-based permissions for AngularJS
Stand-alone project showing how to make a robust angular application serving access permissions from Server

08-28 22:28