2019独角兽企业重金招聘Python工程师标准>>>
ionic作为应用,肯定和服务器有数据交换,分散处理api太繁琐,所以一般用拦截器来集中处理。
主要由以下几个方面的应用:
- 服务器地址注入
- 错误处理
- token注入
- 日志处理
- 无token时跳转至登录页面
- ...
有四个方法
request: function(config)
requestError: function(config)
response: function(response)
responseError: function(response)
基本看方法名称就知道其意义。具体的用法、写法请参考:http://my.oschina.net/ilivebox/blog/290881?p=1
1、服务器注入、token注入:
request: function(config) {
if (config.params)
config.params['x-session-token'] = CacheService.token();
// 远程服务,统一添加服务器地址
var uri = config.url;
if (config.method == "JSONP") {
config.url = fGetHost() + uri;
config.uri = uri;
}
return config;
}
2、token超时:
response: function(response) {
if (response.config.method == "JSONP") {
if (!fIsWhiteUri(response.config.uri)) {
var login = response.data['x-session-login'];
// 强制用户登录
if (!login) {
$location.path('/user/login');
return $q.reject(response);
}
}
}
return response;
}
说明:1、每次都传入
x-session-token参数以便后端验证;
2、后台返回
x-session-login:false
表示token过期,需要重新登录。