关键之处有两点:
用户登陆成功后,从服务器返回的数据,整个APP内部都要去使用,而这部分数据,存到哪里? 因为当前的组件尤其特有的生命周期,一旦组件销毁,这部分数据也会被销毁; 一般数据是放到 LocalStorage 中
用户登出之后,应将 LocalStorage 中的 cache 清楚
当LocalStorage 还在 时候,我们打开应用 直接会蹦到tabs 页面,就像我们平时打开支付宝的时候一样;
当我们去向服务器发送请求的时候,若token 还在有效期内,我们就可以正常去请求数据,否则若服务器返回token 过期,我们会将localStorage 清理掉,并将用户导向到登陆也 让其重新进行登陆; 这就是重新登陆 的逻辑; Since we are using token based authentication,
it protects if any unauthorized request is made and notices for a new login if required.
once the signup process successfully, we are redirectiong to the home page . but the response data we are going to use in the applications every page , so that's why I'm going to store this somewhere , because we need to carry this thing from different pages
above is the reason we're using LocalStorage this is like application cache
signup(){this.authService.postData(this.userData,'signup').then((result)=>{this.responseData=result;if(this.responseData.userData){console.log(this.responseData);localStorage.setItem('userData',JSON.stringify(this.responseData));this.navCtrl.push(TabsPage);}else{console.log("User already exists");}},(err)=>{// Error log});clear up localStorage
backToWelcome(){constroot=this.app.getRootNav();root.popToRoot();}logout(){localStorage.clear();// 因为 清理缓存 需要花费一点时间,所以此处我们要设一个定时器;// 将时间到了,将要执行的内容 封装到backToWelcome函数中;setTimeout(()=>this.backToWelcome(),1000);}exportclassWelcome{constructor(publicnavCtrl: NavController,publicnavParams: NavParams){// if the LocalStorage has not been cleared, so we can straightly redirect to tabPageif(localStorage.getItem('userData')){this.navCtrl.setRoot(TabsPage);}}}上述的几个逻辑 都是基于 localStorage 的