如何在 AngularJS 和 FireBase 中进行简单的基于角色的授权?
How to make simple role based authorization in AngularJS and FireBase?
我想在 AngularJS 和 FireBase(管理员、用户)中进行简单的基于角色的授权。
我做了基本授权和路由(看下面的3个文件)。
我找到了 repository in github and 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;
}]);
有很多关于如何制作的信息。
来自 Whosebug 的文章/指南/答案
- Article about advanced data modelling and role based authorization
- Article about role based routing in AngularJS (by 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 Whosebug
- Recommendation from Whosebug (angular 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
我想在 AngularJS 和 FireBase(管理员、用户)中进行简单的基于角色的授权。 我做了基本授权和路由(看下面的3个文件)。
我找到了 repository in github and 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;
}]);
有很多关于如何制作的信息。
来自 Whosebug 的文章/指南/答案
- Article about advanced data modelling and role based authorization
- Article about role based routing in AngularJS (by 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 Whosebug
- Recommendation from Whosebug (angular 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