首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在每次发送http请求时在报头中包含身份验证令牌?

如何在每次发送http请求时在报头中包含身份验证令牌?
EN

Stack Overflow用户
提问于 2021-05-25 09:44:09
回答 1查看 70关注 0票数 0

我使用的是ngx-admin的最新版本,我已经这样修改了我的app.module.ts:

代码语言:javascript
复制
    NbAuthModule.forRoot({
  strategies: [
    NbPasswordAuthStrategy.setup({
      name: 'email',
      baseEndpoint: 'https://localhost:5001',
      token: {
        class: NbAuthJWTToken,
        key: 'token'
       },
       login: {
         // ...
         endpoint: '/api/Auth/login',
         redirect: {
          success: '/pages/dashboard',
          failure: null, // stay on the same page
        },
       },
       logout:{
        redirect: {
          success: '/auth/login',
          failure: null, // stay on the same page
        },
       },
       register: {
         // ...
         endpoint: '/api/Auth/register',
       },
    }),
  ],
  forms: {
    login: formSetting,
       register: formSetting,
       requestPassword: formSetting,
       resetPassword: formSetting,
       logout: {
         redirectDelay: 0,
       },
  },
}), 

],

代码语言:javascript
复制
  bootstrap: [AppComponent],
  providers: [AuthGuard,
    { provide: HTTP_INTERCEPTORS, useClass: NbAuthJWTInterceptor, multi: true },]

我可以从我的系统进行登录和注销,我将令牌保存到我的本地存储中,名称为app_auth_token及其包含:

代码语言:javascript
复制
{"name":"nb:auth:jwt:token","ownerStrategyName":"email","createdAt":1621867077000,"value":"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJuYW1laWQiOiJhZG1pbkBteWNhZmUuY29tIiwidW5pcXVlX25hbWUiOiJhZG1pbiIsInJvbGUiOiJBZG1pbiIsIm5iZiI6MTYyMTg2NzA3NywiZXhwIjoxNjIyMDM5ODc3LCJpYXQiOjE2MjE4NjcwNzd9.C06e6bSPhlIl16A3iTtU3yGi8078K1I5aTy-QDVIiX_cHr6-HQQAFjgQRwWuI9tuzCe5G9HC7IFSeyN_dI4BuA"}

我在我的页面上测试了从服务器检索需要身份验证的数据,但似乎发送到服务器的头中没有令牌。

代码语言:javascript
复制
this.httpClient.get<User[]>(this.apiUrl+'user/list');

下面是我从浏览器复制的标题

代码语言:javascript
复制
GET /api/user/list HTTP/2
Host: localhost:5001
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,id;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Origin: http://localhost:4200
DNT: 1
Connection: keep-alive
Referer: http://localhost:4200/
Pragma: no-cache
Cache-Control: no-cache

我收到代码401 UnAuthorized

我在postman中测试了token值,它是有效的和有效的。但是如何在我每次发出http请求时告诉nebular发送令牌呢?我读了文档,它应该是自动完成的。我错过了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2021-05-25 10:21:11

找到解决方案:

在app.module.js中,我需要在NB_AUTH_TOKEN_INTERCEPTOR_FILTER上返回false

我希望他们能把这个写进文件里

代码语言:javascript
复制
  providers: [AuthGuard,
    { provide: NB_AUTH_TOKEN_INTERCEPTOR_FILTER, useValue: function () { return false; }, },
    { provide: HTTP_INTERCEPTORS, useClass: NbAuthJWTInterceptor, multi: true },]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67680701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档