RTW*_*RTW 9 express socket.io reactjs
在我的客户端,我这样做:
useEffect(() => {
socket.emit('login', myLoginCode)
}, [])
Run Code Online (Sandbox Code Playgroud)
在服务器端,我做了这个:
app.get('login', (req, res) => {
const cookieProtected = {
maxAge: 946080000000,
httpOnly: true,
secure: true,
sameSite: true
}
res.cookie('id', login, cookieProtected)
res.cookie('session', encryptSession, cookieProtected)
res.cookie('logged', 'true', {
maxAge: 946080000000,
secure: true,
sameSite: true
})
})
Run Code Online (Sandbox Code Playgroud)
但是我怎么能用套接字做同样的事情呢?
socket.on('login', loginCode => {
// How to to place cookies in user browser from here?
}
Run Code Online (Sandbox Code Playgroud)
也许有一种方法可以使用socket.emit发送标头?
如果不重写 IO 库,我们就无法做到这一点,因此唯一的选择是在客户端设置 cookie。
现在我只是在服务器上验证用户并像对象一样发送客户端 cookie,然后在客户端我这样做:
document.cookie =
'id=' +
loginData.id +
'; expires=Fri, 31 Dec 9999 23:59:59 GMT; secure; samesite=strict; path=/'
Run Code Online (Sandbox Code Playgroud)