[英]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.