0

如何在 ngx-admin/Nebular 应用程序中通过 GraphQL API 进行身份验证流程?

我发现可用的AuthStrategy课程是有限的,没有直接的方法可以改变他们的行为。最接近的是NbPasswordAuthStrategy,它执行 HTTP 请求,但我还没有弄清楚如何将它与 GraphQL API 一起使用。

4

2 回答 2

0

目前,通过 a 进行身份验证GraphQL不可用。要解决这个问题,您需要创建一个新策略,NbPasswordAuthStrategy但您的新策略将向 client 发出请求GraphQL而不是 plaint HttpClient

于 2019-02-06T06:05:33.300 回答
0

作为通过 GraphQL API 获得身份验证的一种解决方法,我已经继承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()
    })
  }
于 2019-02-07T13:02:40.450 回答