AngularJS& JHipster并感谢任何帮助。
我目前有两个用户权限,ROLE_ADMIN和ROLE_USER。登录后,我希望能够将用户定向到他们有权访问的不同页面。我相信我已经能够将问题缩小到我在控制器中的标志:
function login (event) {
event.preventDefault();
Auth.login({
email: vm.email,
password: vm.password,
rememberMe: vm.rememberMe
}).then(function () {
vm.authenticationError = false;
$state.go('home', {}, {reload: true});
$rootScope.$broadcast('authenticationSuccess');
// previousState was set in the authExpiredInterceptor before being redirected to login modal.
// since login is successful, go to stored previousState and clear previousState
if (Auth.getPreviousState()) {
var previousState = Auth.getPreviousState();
Auth.resetPreviousState();
$state.go(previousState.name, previousState.params);
}
}).catch(function () {
vm.authenticationError = true;
});}
如果我将$state.go('home', {}, {reload: true});
更改为$state.go('trips', {}, {reload: true});
('主页' - >'旅行'),或将其更改为其他页面,只要该用户具有适当的权限,不会进入错误页面。
直观地说,我想补充一下:
if (authority === 'ROLE_ADMIN') {
$state.go('home', {}, {reload: true});
} else if (authority === 'ROLE_USER') {
$state.go('trips', {}, {reload: true});
}
但我无法找到一种方法来访问我所使用的权限。我还查看了auth.service.js并记录了我能想到的一切,看看它是否潜伏在某处。
如果有人有任何建议或能指出我正确的方向,那将是非常有帮助的!谢谢!
答案 0 :(得分:0)
在朋友的帮助下偶然发现了一个解决方案,想要分享以防其他人遇到同样问题...或者更好的解决方案。
查看Principal
在某些其他控制器中所做的事情,发现result
将返回true
或false
Principal.hasAuthority('ROLE_XYZ').then( function(result) {
if(result) {
$state.go('trips', {}, {reload: true});
}
Principal.hasAuthority('ROLE_QWEQWE').then( function(result) {
if(result) {
$state.go('home', {}, {reload: true});
}
结果我只是重复并用有问题的权限替换ROLE_XYZ
并将我引导到我想要访问的页面。