JHipster,AngularJS-登录后,根据用户权限如何将用户带到不同的页面

时间:2018-04-06 04:12:04

标签: angularjs jhipster

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并记录了我能想到的一切,看看它是否潜伏在某处。

如果有人有任何建议或能指出我正确的方向,那将是非常有帮助的!谢谢!

1 个答案:

答案 0 :(得分:0)

在朋友的帮助下偶然发现了一个解决方案,想要分享以防其他人遇到同样问题...或者更好的解决方案。

查看Principal在某些其他控制器中所做的事情,发现result将返回truefalse

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并将我引导到我想要访问的页面。