簡體   English   中英

JHipster,AngularJS-登錄后,基於用戶權限如何將用戶帶到不同頁面

[英]JHipster, AngularJS- After login, based on user authority how to take user to different pages

是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}); ('home'->'trips'),或者將其更改為另一個頁面,只要該用戶具有適當的特權,就可以正常工作;否則,它會轉到錯誤頁面。

直觀地說,我想添加以下內容:

if (authority === 'ROLE_ADMIN') {
    $state.go('home', {}, {reload: true});
} else if (authority === 'ROLE_USER') {
    $state.go('trips', {}, {reload: true});
}

但是我找不到一種方法來訪問我正在/正在使用的權限。 我還查看了auth.service.js,並記錄了我可能想到的所有內容,以查看它是否潛伏在某個地方。

如果有人有任何建議或可以指出正確的方向,那將非常有幫助! 謝謝!

在朋友的幫助下偶然發現了一個解決方案,並希望在其他人遇到相同問題的情況下進行分享……甚至更好的是,一個更優雅的解決方案。

查看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 ,這將我帶到了我要訪問的頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM