【发布时间】:2019-10-01 21:50:57
【问题描述】:
我正在尝试允许我的 Angular 客户端对我的 nestjs 后端进行身份验证,以便只允许授权用户打开 websocket。
我已按照本教程设置我的 Angular 客户端 + nestjs websocket 服务器后端:https://www.joshmorony.com/creating-a-simple-live-chat-server-with-nestjs-websockets/
它显示有一个名为 SocketIoConfig 的对象,它接受一个 url 和选项来打开到 nestjs 后端的 Web 套接字连接。据我了解,为了打开 websocket,浏览器首先发送一个 http 请求,然后如果请求成功,则会收到一个“升级到 ws”响应。我想通过将标头添加到 SocketIoConfig 对象中的选项对象来将授权标头附加到此初始 http 请求。
在客户端的 app.module.ts 我有这个来打开连接:
const config: SocketIoConfig = { url: 'http://localhost:3333', options: { }};
@NgModule({
declarations: [AppComponent, ChatComponent],
imports: [BrowserModule, HttpClientModule,
SocketIoModule.forRoot(config)],
providers: [ ChatService ],
bootstrap: [AppComponent]
})
export class AppModule {}
我希望我可以在 options 对象中添加一个 headers 对象并将 Authorization 标头添加到其中,如下所示:
const config: SocketIoConfig = { url: 'http://localhost:3333', options: {
headers: {
Authorization: Bearer A8V342CsArf2
}
}
};
但是,当我在建立连接时打开 Chrome 网络选项卡时,我在请求标头中看不到授权标头。为什么这个标头没有附加到打开的连接请求中?
【问题讨论】:
标签: angular authentication websocket authorization nestjs