gpt4 book ai didi

reactjs - React.js JWT Socket.io 认证

转载 作者:行者123 更新时间:2023-12-04 13:43:09 26 4
gpt4 key购买 nike

我正在尝试在 React 中使用 Socket.io 和 Express Backend,它使用 JWT(Passport JWT)。
在我通常的 route ,我的 Auth 没有问题。
发送授权 header (授权承载 token )并在后端检查,但是我根本不知道如何在从 React Client 发送数据时包含承载 token 。

我已经查找了 extraHeaders 选项,但根本无法让它们工作。

这是我的代码:

class Chat extends React.Component {
constructor(props) {
super(props);

this.state = {
username: "",
message: "",
messages: []
};


this.socket = io("localhost:5000", {
extraHeaders: {
Authorization: "My Bearer authorization_token_here"
}
});

this.socket.on("RECEIVE_MESSAGE", function(data) {
addMessage(data);
});

const addMessage = data => {
console.log(data);
this.setState({ messages: [...this.state.messages, data] });
console.log(this.state.messages);
};

this.sendMessage = ev => {
ev.preventDefault();
this.socket.emit("SEND_MESSAGE", {
author: this.state.username,
message: this.state.message
});
this.setState({ message: "" });
};
}
render() {jsx code here}

套接字连接已设置,但是我不知道如何将 token 发送到服务器。理想情况下,我会在 token 中发送一个 ID,在服务器上对其进行解码并在我的数据库中查找有关用户的更多信息。

节日快乐,我很感激任何帮助或提示如何解决我的问题。

最佳答案

按照,the documentation如果传输选项设置为轮询,extraHeaders 将仅在浏览器中工作。

因此在服务器端启用轮询并使用以下代码段

io({ 
transportOptions: {
polling: {
extraHeaders: { "Authorization": "My Bearer authorization_token_here" }
},
}
});

关于reactjs - React.js JWT Socket.io 认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53906504/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com