ui-当需要认证时路由器不会重定向uired
ui-router will not redirect when authentication is required
如果用户尚未通过身份验证,则应该重定向到登录页面。 $state.go("login");
应该可以做到这一点,但它什么也没做。
// in app.js
$stateProvider
.state('login', {
template: 'login.html'
url: '/login',
controller: 'AuthenticationCtrl',
})
.state('special', {
resolve: { loginRequired: checkAuthenticated },
template: 'special.html',
url: '/special',
controller: 'SpecialCtrl',
})
var checkAuthenticated = function($state, AuthenticationService, $q, $timeout) {
var deferred = $q.defer();
if(AuthenticationService.isAuthenticated()) {
deferred.resolve();
} else {
deferred.reject();
alert('You are being redirected to login page');
$state.go("login"); // redirect to login page -- but this does nothing.
}
}
在这里,如果用户未通过身份验证并尝试访问需要身份验证的路由,我会看到我的警报弹出。但是之后什么也没有发生; ui-router
没有重定向到我的登录页面。
我也尝试了 $location.path('/login')
而不是 $state.go("login")
,但这也没有任何作用。
我检查了 documentation 它说 go()
:
String Absolute State Name or Relative State Path
我有,所以我一定是遗漏了导致这个问题的东西,但我不确定是什么。
我遇到过状态与警报相关的问题,我通过将 $timeout
设置为 100 毫秒左右解决了这个问题,例如:延迟 state.go,希望这会解决你的问题。
如果用户尚未通过身份验证,则应该重定向到登录页面。 $state.go("login");
应该可以做到这一点,但它什么也没做。
// in app.js
$stateProvider
.state('login', {
template: 'login.html'
url: '/login',
controller: 'AuthenticationCtrl',
})
.state('special', {
resolve: { loginRequired: checkAuthenticated },
template: 'special.html',
url: '/special',
controller: 'SpecialCtrl',
})
var checkAuthenticated = function($state, AuthenticationService, $q, $timeout) {
var deferred = $q.defer();
if(AuthenticationService.isAuthenticated()) {
deferred.resolve();
} else {
deferred.reject();
alert('You are being redirected to login page');
$state.go("login"); // redirect to login page -- but this does nothing.
}
}
在这里,如果用户未通过身份验证并尝试访问需要身份验证的路由,我会看到我的警报弹出。但是之后什么也没有发生; ui-router
没有重定向到我的登录页面。
我也尝试了 $location.path('/login')
而不是 $state.go("login")
,但这也没有任何作用。
我检查了 documentation 它说 go()
:
String Absolute State Name or Relative State Path
我有,所以我一定是遗漏了导致这个问题的东西,但我不确定是什么。
我遇到过状态与警报相关的问题,我通过将 $timeout
设置为 100 毫秒左右解决了这个问题,例如:延迟 state.go,希望这会解决你的问题。