AngularJS routeprovider赢得'Don’我什么都不做
AngularJS routeprovider won't do anything
我试图在每次加载页面之前检查他的会话是否处于活动状态,如果不是,则重定向到登录页面。这是我的App.js
var app = angular.module('Test', ['ngRoute']);
app.config(function($routeProvider){
$routeProvider
.otherwise({
resolve:
{
"checkUserSession": function($q,$http,$window)
{
console.log('start of the def')
var deffered = $q.defer();
$http.get('/general/php/getCurrentUser.php')
.then(function(result)
{
if(!result)
{
deffered.reject();
$window.location.href = "/";
}
else
{
deffered.resolve();
}
});
$window.location.href = "/";
return deffered.promise;
}
}
})
});
它不会执行console.log、$http.get()或任何重定向。不管promise是被解决还是被拒绝,看起来"checkUserSession"永远不会执行;
每一页都包含angular-route.js脚本。
使用拦截器
在我的情况下,我在本地存储中检查身份验证令牌,但您可以在此处使用会话逻辑。
从angular.module(...).config
-开始
.config(function ($stateProvider, $urlRouterProvider, $httpProvider) {
$httpProvider.interceptors.push('BearerAuthInterceptor');
...
然后使用以下服务:
.factory('BearerAuthInterceptor', function ($q, $injector, $window) {
return {
request: function (config) {
config.headers = config.headers || {};
var tk = $window.localStorage.getItem('token');
if (tk) {
config.headers.Authorization = 'Bearer ' + tk;
}
return config || $q.when(config);
},
response: function (response) {
return response || $q.when(response);
},
responseError: function (rejection) {
if (rejection.status === 401) {
// Redirect to login ui-route
$injector.get('$state').go('login');
}
return $q.reject(rejection);
}
};
})
这里有一些很好的例子:http://www.webdeveasy.com/interceptors-in-angularjs-and-useful-examples/
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 全局变量和全局对象的属性之间有什么区别吗
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 元素在我的代码中不会.fadeTo.Don'I don’我不知道;s错误的JavaScript、JQuery、H
- AngularJS routeprovider赢得'Don’我什么都不做
- Grunt+Babel成功运行,但没有'Don’我什么都不做
- 可以'I don’我似乎没有从一整页纸上看出可能的意图是什么
- CGI.unescape和CGI.unescapeHTML don'Don’我什么都不做
- change和onchange don'I don’我不能在电脑上工作.可能是什么原因造成的
- 在ui中,路由器用不同的参数链接到相同的状态don'Don’我什么都不做
- 学习AJAX,html代码取胜'Don’我什么都不做
- 我可以'I don’我不知道我在做什么;m缺失,除了一个选项外,代码可以100%工作
- HTML中的JQuery;Don’我什么都不做
- JqueryUI自动完成:autoFocus=true获胜'Don’我什么都不做
- 动态定义JSON-can'I don’我没有发现我做错了什么
- 为什么模板绑定文档中提到了eventbeforeRemove,而它没有'Don’我什么都不做
- 重置间隔计时器Don't工作!什么'It’他错了