我开发了一个带有身份验证过程的网站。用户可以是管理员也可以不是。我编写不同的组件和不同的状态来路由用户。
我已经控制 HTTP 请求来处理身份验证过程,但是当简单用户尝试使用键入地址转到未授权页面页面时,我想强制重定向。
例子
他输入管理员网址:
我想将此用户重定向到他来自的页面,或强制他留在当前页面...
我尝试做这样的事情: www.seanmarchetti.com/authentication_with_angularui_router.html
但我有不同的项目结构
我在“管理员”中控制对状态的访问,我想使用$state.go
,但非管理员状态..我尝试使用toState
但没有工作(或者我可能不明白如何正确使用它)
这是我的代码admin.router.js
:
'use strict';
angular.module('appModule.admin')
.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.when('/admin', '/admin/users');
$stateProvider
.state('admin', {
url: '/admin',
redirectTo: 'admin.users',
template: '<admin></admin>',
needAdmin: true,
})
.state('admin.users', {
url: '/users',
template: '<users></users>',
needAdmin: true,
})
.state('admin.apis', {
url: '/apis',
template: '<engines></engines>',
needAdmin: true,
})
})
.run(function ($rootScope, $state, Auth) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.needAdmin && !Auth.isAdmin()) {
console.log('fromstate', fromState);
console.log('tostate', toState);
$state.go('/*UNKNOWN STATE FROM HERE*/');
event.preventDefault();
}
});
});
谁能帮助我如何将用户正确重定向到.state unknown
from admin
?