JWT中验证成功后获取用户数据的req.user问题

看下面一段代码

//验证成功后获取信息
app.get("/paprika/getinfo",(req,res)=>{
    console.log(req.user)
    res.send({
        status:200,
        message:"获取用户信息成功!!!",
        data:req.user
    })
})

其中的req.user其实是大家惯有的写法,一开始看到可能会感到奇怪  我们之前只见过req.body(用在post的表单数据的获取)或者req.query(用在get的url参数数据的获取)

而这里出现一个req.user  那就很奇怪了  其实这是JWT独有的写法

如下面的代码:

const jwt = require('jsonwebtoken');
const expressJwt = require('express-jwt');

// 设置 JWT 密钥
const secretKey = 'my_secret_key';

// 创建 JWT 中间件
const jwtMiddleware = expressJwt({ secret: secretKey });

// 在路由处理链中注册中间件
app.use(jwtMiddleware);

// 处理受保护的路由
app.get('/protected', (req, res) => {
  // 获取存储在 JWT 中的用户信息
  const user = req.user;

  // 返回用户信息
  res.send(`Hello, ${user.username}!`);
});

在受保护的路由中  如果验证secret密钥成功  那么能获取客户端发来的用户填写的数据  直接用req.use获取  但是我们也是可以改变这个写法的  不一定就一定得用req,user  

在上面的示例中,req.user 是一个通用的惯例,用于存储从 JWT 中解析出来的用户信息,并在后续的路由处理函数或中间件中使用该对象来获取用户信息。如果您希望使用其他名称来存储用户信息,可以根据自己的需要修改代码。

例如,如果您喜欢将用户信息存储在 req.currentUser 属性中,可以在调用 express-jwt 中间件时指定 userProperty 选项来更改属性名称,如下所示:

const jwtMiddleware = expressJwt({
  secret: 'my_secret_key',
  userProperty: 'currentUser' // 将用户信息存储在 req.currentUser 属性中
});

app.use(jwtMiddleware);

app.get('/protected', (req, res) => {
  const user = req.currentUser;
  res.send(`Hello, ${user.username}!`);
});

在上面的示例中,express-jwt 中间件会将解码后的用户信息存储在 req.currentUser 属性中,因此在 /protected 路由处理函数中,我们使用 req.currentUser 来获取用户信息。

需要注意的是,修改 userProperty 选项的值可能会影响其他代码对 req.user 属性的使用,因此建议在整个应用程序范围内使用统一的命名规范。

JWT学习视频:06.jwt-在express中生成token_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值