1

我正在使用NebularDjango API。

我有以下身份验证策略设置

  NbOAuth2AuthStrategy.setup({
    name: 'oauth',
    baseEndpoint: `${environment.apiURL}auth/`,
    clientId: `${environment.clientId}`,
    clientSecret: `${environment.clientSecret}`,
    clientAuthMethod: NbOAuth2ClientAuthMethod.BASIC,
    redirect: {
      success: '/',
      failure: null,
    },
    token: {
      endpoint: 'token/',
      grantType: NbOAuth2GrantType.PASSWORD,
      class: NbAuthOAuth2Token,
    },
  }),

端点应该接受client_id并且client_secret为了登录。

邮递员有效载荷是

在此处输入图像描述

但是星云请求有以下数据

body: "grant_type=password&username=test%40example.com&password=test1234"
headers: HttpHeaders {normalizedNames: Map(2), lazyUpdate: null, headers: Map(2), lazyInit: null}
method: "POST"
params: HttpParams {updates: null, cloneFrom: null, encoder: HttpUrlEncodingCodec, map: Map(0)}
reportProgress: false
responseType: "json"

尸体不见了client_id,而且client_secret。如何添加client_idand client_secret

4

2 回答 2

0

client_idandclient_secret不会出现在请求的正文中。您已设置clientAuthMethod: NbOAuth2ClientAuthMethod.BASIC将这些值添加到Authorization标题中。

如果您查看请求的标头,它将有一个格式如下的标头...

Authorization Basic <base64-encoded-string (client_id:client_secret)>
于 2020-01-01T00:50:43.970 回答
0

您可以将要在请求正文中提供的客户端身份验证设置为:

...NbAuthModule.forRoot({
    strategies: [
      NbOAuth2AuthStrategy.setup({
        clientId: environment.auth.clientId,
        clientSecret: environment.auth.clientSecret,
        clientAuthMethod: NbOAuth2ClientAuthMethod.REQUEST_BODY,
        name: 'email',
        baseEndpoint: environment.serverBaseUrL,
        token: {
          endpoint: '/api/oauth/token',
          grantType: NbOAuth2GrantType.PASSWORD,
          ...
        },
      }),
    ],
于 2021-01-23T03:59:26.323 回答