1.tokenNew获取
tokenError:true时调用客户端登录面板,登录后会生成一个新的tokenNew,如果把它放在$rootScope.tokenNew变量里,
刷新页面tokenNew会丢失.如果持久化放在cookie或localstorage不安全。
tokenNew是敏感信息,恶意用户可以从tokenNew取到用户信息。
可以在每次载入页面时获取tokenNew信息。
app.run([
'httpService', function(httpService) {
webView.setWebViewData(urlParms).init('userInfomation=1&callback=userInfomation', function(res) {
var data = JSON.parse(res);
$rootScope.tokenNew = data.tokenNew;
});
}]);
2.android回调覆盖
客户端协议封装方法
var setWebViewData = function (urlParms) {
return {
init: function(parms, callback) {
window.getWebViewJavascriptBridge[callbackName] = function (res) {
callback && callback(res);
}; // window.getWebViewJavascriptBridge为{}
//android
if (typeof window.jcTheme != "undefined" && typeof window.jcTheme.setWebViewJavascriptBridge != "undefined") {
window.jcTheme.setWebViewJavascriptBridge(parmsData);
}
}
}
}
客户端协议调用方式
webView.setWebViewData(urlParms).init('userInfomation=1&callback=userInfomation', function(res) {
var data = JSON.parse(res);
$rootScope.tokenNew = data.tokenNew;
});
在app.run页面载入时一次,在controller.js 里面再调用一次,就会发生回调覆盖的问题。callbackName都为userInfomation.
window.getWebViewJavascriptBridge['userInfomation']被两次赋值,app.run里面的被controller.js 里面的覆盖。
客户端调用window.getWebViewJavascriptBridge['userInfomation']方法时只能取到后面的赋值,即controller.js 里面的。
- 刷新问题
如果从A路由跳到B路由,B路由的接口中报了一个TokenError:true,调用登录面板刷新,加入A路由中设置了全局变量
window.a或$rootScope.a,store.commit('setA','a'),而B路由依赖与a变量就会取不到值。B路由如果能从url上取到a的值就没问题。
或者持久话,把它放在cookie或localstorage里面.