我想在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 提供访问权限。