Reka bentuk kebenaran yang paling biasa ialah kawalan akses berasaskan peranan RBAC Idea asas ialah pelbagai kebenaran untuk operasi sistem tidak diberikan secara langsung kepada pengguna tertentu, tetapi set peranan ditetapkan antara set pengguna dan set kebenaran . Setiap peranan sepadan dengan set kebenaran yang sepadan.
Setelah pengguna diberikan peranan yang sesuai, pengguna mempunyai semua kebenaran operasi untuk peranan ini. Kelebihan ini ialah anda tidak perlu memberikan kebenaran setiap kali anda membuat pengguna Anda hanya perlu menetapkan peranan yang sepadan kepada pengguna Selain itu, perubahan kebenaran peranan adalah lebih rendah daripada perubahan kebenaran pengguna. yang akan memudahkan pengurusan kebenaran dan mengurangkan overhed sistem.
Dalam aplikasi satu halaman yang dibina oleh Angular, kami perlu melakukan beberapa perkara tambahan untuk melaksanakan seni bina sedemikian Dari segi keseluruhan projek, terdapat kira-kira 3 tempat yang perlu ditangani oleh jurutera hadapan.
Jika anda ingin menggunakan AngularJS untuk pengesahan pada klien, adalah disyorkan untuk menggunakan perkhidmatan kerana perkhidmatan adalah tunggal dan boleh digunakan dengan mudah dalam semua paparan, pengawal, arahan, penapis dan Perkongsian perkhidmatan lain data tanpa mendedahkan pembolehubah global, dan enkapsulasi juga dijamin.
Contoh mudah:
services.factory('UserService', [function() { var sdo = { isLogged: false, username: '' }; return sdo; }]);
var controllers = angular.module('myApp.controllers', []); /* ... */ controllers.controller('loginController', ['$scope', '$http', 'UserService', function(scope, $http, User) { }]);
scope.login = function() { var config = { /* ... */ } // configuration object $http(config) .success(function(data, status, headers, config) { if (data.status) { // succefull login User.isLogged = true; User.username = data.username; } else { User.isLogged = false; User.username = ''; } }) .error(function(data, status, headers, config) { User.isLogged = false; User.username = ''; }); }
Memandangkan AngularJS biasanya menggunakan templat untuk memisahkan dan menyusun semula halaman, routeProvider digunakan untuk mengawal peraturan akses setiap halaman:
app.config(['$routeProvider', function($routeProvider) { $routeProvider.when('/login', { templateUrl: 'partials/login.html', controller: 'loginCtrl' , access: {isFree: true}}); $routeProvider.when('/main', { templateUrl: 'partials/main.html', controller: 'mainCtrl' }); $routeProvider.otherwise({ redirectTo: '/main' }); }]);
directives.directive('checkUser', ['$rootScope', '$location', 'userSrv', function ($root, $location, userSrv) { return { link: function (scope, elem, attrs, ctrl) { $root.$on('$routeChangeStart', function(event, currRoute, prevRoute){ if (!prevRoute.access.isFree && !userSrv.isLogged) { // reload the login route } /* * IMPORTANT: * It's not difficult to fool the previous control, * so it's really IMPORTANT to repeat the control also in the backend, * before sending back from the server reserved information. */ }); } } }]);
Di atas ialah kaedah pengesahan AngularJS yang diperkenalkan oleh editor saya harap ia akan membantu semua orang.