ログインしたユーザーの役割に基づく差分アクセスを含む平均スタック Web アプリケーションに取り組んでいます。admin、govt、ボランティアなど、いくつかの異なる役割があります。
1. 役割に基づいてフロント エンドを管理する方法は?
現在、私は役割ごとにisAdmin、isVolunteer、isGovtなどのグローバルフラグを設定しており、それらの値に基づいて、使用してさまざまなUIを表示できますdata-ng-if = "Global.isAdmin"
このアプローチは正しいですか。そうでない場合は、UI を処理する正しい方法を提案してください。
2. ユーザーが認証を受けていない場合、バックエンドを管理してルートをリダイレクトする方法は?
現在、angular-permissionとrbacを使用しようとしていますが、アプリケーションでこれらを正常に使用できません。平均スタックWebアプリのロールベースのアクセス制御のベストプラクティスを教えてください。
angular-permissionを使用しようとしたときに、作成したロールをルート ファイルにリンクできませんでした。
これはロールモジュールです。
angular.module('mean.users', ['permission'])
.run(['permission', 'Global', '$q',
function(Permission, Global, $q) {
console.log('not anonumous');
Permission
.defineRole('anonymous', function(stateParams) {
var deferred = $q.defer();
if (Global.user) {
deferred.resolve();
} else {
deferred.reject();
}
return deferred.promise;
})
.defineRole('admin', function(stateParams) {
if (Global.isAdmin) {
deferred.resolve();
} else {
deferred.reject();
}
return deferred.promise;
})
.defineRole('govt', function(stateParams) {
if (Global.isGovt) {
deferred.resolve();
} else {
deferred.reject();
}
return deferred.promise;
})
.defineRole('volunteer', function(stateParams) {
if (Global.isVolunteer) {
deferred.resolve();
} else {
deferred.reject();
}
return deferred.promise;
});
}
]);
ルートファイルで構成された上記のロールをリンクする方法
$stateProvider
.state('create user', {
url: '/users/create',
templateUrl: 'users/views/create.html',
resolve: {
loggedin: checkLoggedin
}
})
.state('all users', {
url: '/users/list',
templateUrl: 'users/views/list.html',
data: {
permissions: {
only: ['admin'],
redirectTo: 'home'
}
}
})
.state('show user', {
url: '/users/:userId/view',
templateUrl: 'users/views/view.html',
resolve: {
loggedin: checkLoggedin
}
})
.state('edit user', {
url: '/users/:userId/edit',
templateUrl: 'users/views/edit.html',
data: {
permissions: {
only: ['admin']
}
}
})
.state('myprofile', {
url: '/users/:userId/me',
templateUrl: 'users/views/myprofile.html',
resolve: {
loggedin: checkLoggedin
}
});