如何在AngularJS和FireBase中实现简单的基于角色的授权



我想在AngularJS和FireBase中做一个简单的基于角色的授权(admin, user)。我创建了基础授权和路由(查看下面的3个文件)。

我在github和文章中找到了一个存储库,但代码对我来说太难了。有更简单的方法吗?如何更改代码以添加此功能?如果您能提供文章和知识库的链接,我将不胜感激。


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

  • 关于高级数据建模和基于角色的授权的文章
  • 关于AngularJS中基于角色路由的文章(by ng-mm-route)
  • 关于在AngularJS应用中开发基于权限的授权系统的小指南
  • 关于AngularJs中基于角色的授权和权限的文章
  • StackOverflow的好方案
  • StackOverflow推荐(angular permission)
<

帮助存储库/strong>

  • 基本用户配置文件管理
  • 演示如何使用Angular + Firebase + Google Material Design
  • 简单登录(Facebook, Twitter, Google, Github)和聊天应用程序与Angular和Firebase
  • 基于角色的Firebase授权
  • AngularJS基于角色的权限
  • 独立项目,展示如何创建一个健壮的angular应用程序,从Server
  • 提供访问权限。

相关内容

  • 没有找到相关文章

最新更新