Поток аутентификации Nebular (ngx-admin) через API GraphQL - PullRequest
0 голосов
/ 31 января 2019

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

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

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

В качестве обходного пути для получения аутентификации с помощью 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()
    })
  }
0 голосов
/ 06 февраля 2019

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

...