$scope.$on('$stateChangeStart',function(event, toState, toParams, fromState, fromParams){
//如果是登录页面就不进行处理 retrun
if(toState.name=='login') return;
//comApi是有一个工具类 此处是判断是否登录 登录信息放缓存了
if(!comApi.isNotNullAndUndefined($sessionStorage.ustu)){
//不是登录页面 取消默认跳转 去登录页面
event.preventDefault();// 取消默认跳转行为
$state.go("login",{from:toState.name,w:'notLogin'});//跳转到登录界面
}
});
//登录控制器
var from = $stateParams.from;
console.log($stateParams);
$state.go(from && from != "login" ? from : "app.home");
/**
* Created by wanggs */
//拦截http请求的拦截器 httpProvider提供了一个名为interceptors的数组.这个数组接受拦截器服务注册,通过过程次的注册最终会形成拦截器链.这样每次在调用http服务的时候,angular都会通过我们定义的拦截点(切面)进行相应的Ajax动作修改.
app.factory('factoryFilters', function ($sessionStorage, $location) {
var sessionInjector = {
request: function (config) {
//请求之前
//判断是否登陆.登陆后将token放到请求头部
if ($sessionStorage.ustu) {
config.headers["hahh"] = $sessionStorage.ustu;
}
return config;
},
response: function (config, header, header1, header2) { //请求成功之后
//从返回头部获跳转
if (config.headers("hahh")) {
$sessionStorage.ustu = config.headers("hahh");
}
return config;
},
requestError: function (config) {
//请求之前错误
return config;
},
responseError: function (config) {
//请求之后错误
return config;
}
};
return sessionInjector;
});
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('factoryFilters');
}]);
angular 路由拦截
最新推荐文章于 2022-04-16 11:03:49 发布