angularjs - 如何在AngularJS和FireBase中进行基于角色的简单授权?

标签 angularjs firebase angularfire angular-routing user-roles

我想在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;
}]);

最佳答案

关于angularjs - 如何在AngularJS和FireBase中进行基于角色的简单授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39424232/

相关文章:

java - 根据位置条件创建Adapter

firebase - "java.lang.IllegalArgumentException: Unsupported value"访问FireStore子集合异常

javascript - 将 Firebase $asArray() 转换为 Javascript 数组

javascript - 如何在页面之间传递输入 ="file"数据

AngularJS CamelCase 与 bind 和 $apply 解释

java - 如果几秒钟后仍未完成,则取消 firebase 上传

AngularFire/Firebase - 检查身份验证状态

javascript - 在 $ 'Ng-If' ).change 或 angularfire $add 上使用 "breaks"('#x' 程序

java - 我应该将我的 Angular 文件放在同一个 JEE 项目中吗?

javascript - 从 AngularJS Controller 调用 Javascript 函数