Поток аутентификации Nebular (ngx-admin) через API GraphQL

Как выполнить проверку подлинности через API GraphQL в приложении ngx-admin/Nebular?

Я нахожу в наличии AuthStrategy классы ограничены, и нет простого способа изменить их поведение. Ближайший NbPasswordAuthStrategy, который выполняет HTTP-запрос, но я не понял, как использовать его с API-интерфейсом GraphQL.

2 ответа

В качестве обходного пути для получения аутентификации через API GraphQL, я подкласс NbLoginComponent и перезаписать это login() метод, передавая правильную полезную нагрузку запроса GraphQL NbAuthService.authenticate()Например:

  login(): void {
    this.errors = []
    this.messages = []
    this.submitted = true

    const data = {
      variables: this.user,
      query: 'mutation($username: String!, $password: String!) { login(username: $username, password: $password) { token } }',
    }
    this.service.authenticate(this.strategy, data).subscribe((result: NbAuthResult) => {
      this.submitted = false

      if (result.isSuccess()) {
        this.messages = result.getMessages()
      } else {
        this.errors = result.getErrors()
      }

      const redirect = result.getRedirect()
      if (redirect) {
        setTimeout(() => {
          return this.router.navigateByUrl(redirect)
        }, this.redirectDelay)
      }
      this.cd.detectChanges()
    })
  }

На данный момент, аутентификация через GraphQL не доступен из коробки. Чтобы решить эту проблему, вам нужно создать новую стратегию, такую ​​как NbPasswordAuthStrategy но ваша новая стратегия будет делать запросы с GraphQL клиент вместо жалобы HttpClient,

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