![](/img/trans.png)
[英]AngularJS- Prompting the user before routing to other controller to save changes
[英]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
將返回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
,這將我帶到了我要訪問的頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.