Okta身份验证登录

问题描述

tl; dr:执行await oktaAuthService.login('/');后,下一条指令将被跳过。

我有以下内容

import {Injectable} from '@angular/core';
import {OktaAuthService} from '@okta/okta-angular';

@Injectable({
  providedIn: 'root'
})
export class AuthService {
  this.user = undefined;
  constructor(private oktaAuthService: OktaAuthService,private bkndSrv: BackendService) {}
  
async login() {
    await this.oktaAuthService.login('/');
    // the next 2 lines are not being executing!
    this.user = await this.oktaAuth.getUser();
    console.log("user: ",this.user);
  }

当我调用login()函数时,我被重定向到okta登录页面,并且成功地被令牌重定向回了我。但是,我看不到屏幕上的日志,即使登录功能完成后,this.user仍未定义。

任何帮助将不胜感激!

解决方法

好吧,重构为.then表示法做到了。即

  login() {
    this. oktaAuthService.login('/').then(() => {
      this. oktaAuthService.getUser().then((user) => {
        this.user = user;
        console.log('user: ',this.user);
      });
    });
  }

但是,如果有人知道如何使用异步等待,请分享!