Правильный вызов метода обслуживания и его использование в перехватчике

Моя идея состояла в том, чтобы создать один сервисный метод с именем loggedIn(), который я хочу вызвать в перехватчике. Сервисный метод loggedIn() должен доставить действительный токен, который доступен в localStorage. В дополнение к существованию я хочу проверить действительность того токена, который вызывает API-интерфейс verifytoken с сервера. Почтовый вызов в методе verifytoken внутри службы сделает это.

Как вы можете видеть в коде, что я вызываю метод сервиса verifytoken внутри loggedIn(). Является ли это действительным подходом для вызова методов инцидентов той же службы?

Так как loggedIn() будет доставлять результат verifytoken async, есть ли необходимость приписывать метод службы loggedIn() при вызове его в перехватчике?

в моем сервисе:

       loggedIn(): string{
          let tok = localStorage.getItem('token');
          if (tok=== null || tok === undefined || tok === ""){
            return "";
          }else{
            //return tok;

            this.verifyToken(tok).subscribe(
              res => {
                console.log(res);
                console.log(res.success);
                return tok;
              },
              err => {
                console.log(err);
                return "";
              }
            )  
          }  
      }


      verifyToken( tok: string ){
          let headers = new HttpHeaders({
            'Content-Type': 'application/json',
            'Authorization': tok });
          let options = { headers: headers };
          return this.http.post<any>(this.verifyUrl, "", options );
      }

В моем перехватчике:

    intercept(req, next){
      //Interceptor ausschliessen
      const exclude = "/verifytoken";
      console.log('Exclude' +req.url.search(exclude));
      console.log('Req '+req.url);

      let tokenizedRequest = req;

      if (req.url.search(exclude)===-1){
        //req clonen und mit header anreichern
        let mytoken = this.authServ.loggedIn();
        console.log('Token im Intercept '+mytoken);
        tokenizedRequest = req.clone({
          setHeaders: {
            Authorization: mytoken
          }
        });      
      }
      return next.handle(tokenizedRequest);
    }

0 ответов

Другие вопросы по тегам