在angular2 / ionic2中同时执行可观察的请求

杰夫

我是angular2和ionic2的新手,我想在另一个成功请求之后执行两个请求

那就是在成功登录后,我想检查返回的令牌是否在服务器上具有访问权限,然后相应地重新引导用户

这是我尝试过的但不起作用

  redirrect(token: string) {

//console.log(token)  returns value of the token

       if (this._authservice.checkAccessRights(token, "is-marshal")) {
           this._navCtrl.setRoot(MarshalPage);

      } else if(this._authservice.checkAccessRights(token, "can-read")) {

           this._navCtrl.setRoot(UserPage);

      } else {

      //force logout then redirrect to login page
         return this._authservice.logout()
            .subscribe(() => {
            this.showtoast("No access rights");
            this._navCtrl.setRoot(LoginPage);
         },
       error=>this.handleError())
    }

   }

这是_authservice

  checkAccessRights(usertoken: string, permission: string): Observable<any>             
    {
         let headers = new Headers();
         headers.append('Authorization', 'Bearer ' + usertoken);

      return this._http.post(this.authurl +"can-access",permission)
       .map((response: Response) => {
           return response;  //this response is true or false from server
         });
   }
苏拉杰·饶

checkAccessRights返回一个可观察值,则需要订阅并检查是否为真。当前,您只是在检查是否返回了一个observable。

尝试:

    redirrect(token: string) {

    //console.log(token)  returns value of the token

          this._authservice.checkAccessRights(token, "is-marshal").subscribe(
              data=>{
               data?
                  this._navCtrl.setRoot(MarshalPage):
                       this._authservice.checkAccessRights(token, "can-read").
                       subscribe(data=>{
                        if(data)
                         this._navCtrl.setRoot(UserPage);
                        else
                          this._authservice.logout()
                              .subscribe(() => {
                                this.showtoast("No access rights");
                                this._navCtrl.setRoot(LoginPage);
                                },
                               error=>this.handleError());

          //force logout then redirrect to login page

                         });

          });
}

使用switchmap:

  redirrect(token: string) {


             canRead$ = this._authservice.checkAccessRights(token, "can-read").switchmap(data=>data?Observable.fromPromise(this._navCtrl.setRoot(UserPage)).mapTo(true)):
    this._authservice.logout().mapTo(false));

             marshal$ = this._authservice.checkAccessRights(token, "is-marshal").switchmap(data=>{data? Observable.fromPromise(this._navCtrl.setRoot(MarshalPage)).mapTo(true):
    canRead$);
                        marshal$.subscribe(data=>{
                             if(!data){
                                    this.showtoast("No access rights");
                                    this._navCtrl.setRoot(LoginPage);
                                    },
                                   error=>this.handleError());

              //force logout then redirrect to login page

                             });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular2中的可观察对象

来自分类Dev

Angular2可观察

来自分类Dev

间隔上的Ionic2或Angular2 HTTP请求

来自分类Dev

Angular2 ChangeDetection还是可观察的?

来自分类Dev

Angular2可观察和无极

来自分类Dev

Angular2可观察滤镜

来自分类Dev

Angular2可观察与可承诺

来自分类Dev

在Angular2中共享可观察/主题

来自分类Dev

Angular2 / Ionic2:在侦听器中执行$ http.get

来自分类Dev

如何在Angular2的可观察对象中创建可观察对象

来自分类Dev

ionic2 + Angular2的列表选择

来自分类Dev

Ionic2 + Angular2还是React-native?

来自分类Dev

Angular2 / Ionic2:数据绑定

来自分类Dev

Angular2 Ionic2使用Cordova创建插件

来自分类Dev

Ionic2 / Angular2循环依赖性

来自分类Dev

Ionic2/Angular2 Http 不工作

来自分类Dev

Ionic2 / Angular2 MailChimp API GET 响应

来自分类Dev

Angular2合并可观察对象

来自分类Dev

Angular2全局变量可观察

来自分类Dev

Angular2:可观察的订阅与单例成员

来自分类Dev

Angular2 @ TypeScript可观察到的错误

来自分类Dev

Angular2如何清空可观察流

来自分类Dev

angular2 rxjs可观察到的forkjoin

来自分类Dev

Angular2:可观察到的回报承诺

来自分类Dev

angular2 * ngfor和嵌套可观察

来自分类Dev

Angular2如何清空可观察流

来自分类Dev

Angular2 TypeScript可观察到的问题

来自分类Dev

angular2 rxjs可观察到的forkjoin

来自分类Dev

角度可观察的Angular2异步管道