reactjs - JWT - req.cookies 未定义
问题描述
[声明 - 我在 2 小时前发布了关于这个话题的帖子,但实际上,我的要求并不足以让你理解我的挣扎。我可以编辑,但你们中的许多人不会看到更新。然后我在这里添加了很多内容。如果重新发布不是一个好习惯,我深表歉意。]
我想知道关于检索 req.cookies 中存在的值的当前代码有什么问题。
用户登录成功后,我将 cookie 中的访问令牌发送到用户的浏览器(如下所示)
一旦用户登录,他就会被重定向到另一个页面,此时我的 Node/TS API 中的中间件会检查他是否有权。这是MW的代码
import {Request, Response, NextFunction} from 'express'
const jwt = require('jsonwebtoken');
export default function authToken(req: Request, res: Response, next: NextFunction) {
const authCookies = req.cookies['auth-token']
console.log('authCookies', authCookies)
const token = authCookies && authCookies.split(' ')[1]
if (token == null) return res.sendStatus(401) // unvalid
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err: any, user: any) => {
if (err)return res.sendStatus(403) // no longer valid
res.locals = {
...res.locals,
token: user
};
next()
})
}
我只得到一个未定义的输出const authCookies = req.cookies['auth-token']
,我不明白为什么
此外,req 的摘录
body: {},
secret: undefined,
cookies: [Object: null prototype] {},
signedCookies: [Object: null prototype] {},
route: Route {
path: '/main/wallet',
stack: [ [Layer], [Layer] ],
methods: { get: true }
},
这是我声明我的令牌的方式
const accessToken = jwt.sign({id: existingUser.id}, process.env.ACCESS_TOKEN_SECRET, { expiresIn: '15s' })
res.cookie('auth-token', accessToken, { httpOnly: true });
我的 Index.ts 设置
app.use(cors({credentials: true, origin: 'http://localhost:8080'}))
app.use(express.json());
app.use(cookieParser());
我如何在 React 中处理它
axios({
method: 'post',
url,
data: store.getState().user.signInData,
withCredentials: true,
})
.then((res) => {
dispatch(loginSuccess(res.data));
dispatch(getMainWallet(res.data.id));
})
解决方案
推荐阅读
- php - 如何从亚马逊供应商中心获取订单
- javascript - 分号和逗号分隔后的正则表达式匹配
- odoo - 为什么即使在安装 PyPdf3 之后我也会收到错误消息“ImportError:没有名为 pyPdf 的模块”
- scala - Akka:在邮箱中保留不匹配的消息
- swift - 如何在当前单元格(翠鸟)设置图像?迅速
- java-8 - stream() vs. parallelStream() when adding in an ArrayList
- css - 背景图像上下滚动的问题?
- react-native - React native 几种modals开启的优先级
- r - 将R中的两个数据框与不同的变量合并
- c# - 如何从图像构建权重图