当需要身份验证时,ui路由器不会重定向
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")
,但这也没有任何作用。
我查看了go()
:的文档
String Absolute State Name or Relative State Path
我有,所以我一定错过了导致这个问题的东西,但我不确定是什么。
我遇到过状态go与警报结合使用的问题,我通过使用设置为100ms左右的$timeout
解决了这个问题,例如:延迟您的状态.go,希望这能解决您的问题。
相关文章:
- 使用AngularJS中的UI路由器将状态重定向到默认子状态
- 当需要身份验证时,ui路由器不会重定向
- Backbone.js路由器和Internet Explorer重定向问题
- Ember.js:如果控制器中满足某些条件,则在路由器中重定向
- UI 路由器参数 URL 不起作用,只是重定向到 /
- 用户使用铁路由器登录后如何重定向
- JavaScript |角度 |UI 路由器:$urlRouterProvider使用参数重定向
- AngularUI路由器在解析中未重定向
- 如何使用react路由器在重定向时传递参数
- UI 路由器 $state.go 未重定向
- UI 路由器不断重定向到索引,并且不加载状态/视图
- 如何重定向状态子 UI 路由器
- 单击后响应重定向到路由器 URL 并显示默认页面
- Angular ui路由器-重定向不'根本不起作用
- React路由器:获取一个登录成功的url,并传递一个令牌,然后重定向到主页
- 路由器:从canActivate方法返回的承诺中进行重定向
- React路由器在服务器上没有重定向
- React路由器需要auth而不是重定向
- 如何在其他函数中重定向到骨干路由器
- Angular ui -路由器设置网站入口点.重定向到主页URL