express根据token获取用户id「建议收藏」

//登陆时注册tokendb.query(`select*fromuserwherename=${username}andpassword=’${password}’`,(result)=>{if(result.length==1){ //jwt.sign({userId:result[0].id}在注册的时候加入用户id…

大家好,又见面了,我是你们的朋友全栈君。

//登陆时注册token
db.query(`select * from user where name=${ 
     username} and password='${ 
     password}'`, (result) => { 
   
    if (result.length == 1) { 
   
    	//jwt.sign({userId:result[0].id} 在注册的时候加入用户id
        const token = jwt.sign({ 
   userId:result[0].id}, 'buddha', { 
   
            expiresIn: 60 * 60 * 24// 授权时效24小时
        });
        jwt.verify(token, 'suiyi', function(err, decoded) { 
   
            let accessToken=decoded;
            accessToken.token=token;
            accessToken.id=result[0].id;
            accessToken.name=result[0].name;
            res.send({ 
   
                "status": "success",
                "data": [accessToken]
            });
        });
    } else { 
   
        return next(createError(400, '账号或密码错误'));
    }
})

创建一个检查是否登录的中间件,此时就会看到用户id


var createError = require('http-errors');
var jwt = require('jsonwebtoken')
module.exports =(req, res, next)=>{ 
   
    // 拿取token 数据 按照自己传递方式写
    var token = req.body.token || req.query.token || req.headers['token'];

    if (token) { 
   
        // 解码 token (验证 secret 和检查有效期(exp))
        jwt.verify(token, 'suiyi', function(err, decoded) { 
   
            if (err) { 
   
                return res.status(400).send(next(createError(400, '无效的token')));
            } else { 
   
                // 如果验证通过,在req中写入解密结果
                console.log(decoded)//{ userId: 31, iat: 1574244315, exp: 1574330715 }
                req.decoded = decoded;
                next();
            }
        });
    } else { 
   
        return res.status(403).send(next(createError(403, '没有找到token')));
    }
};

最后 req.decoded.userId即可获取用户id

exports.collect_article = async (req, res, next) => { 
   
    
    console.log(req.decoded.userId)

}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129561.html原文链接:https://javaforall.net

(0)
上一篇 2022年4月14日 上午9:20
下一篇 2022年4月14日 上午9:40


相关推荐

  • 网线RJ45接口排线示意图(做网线备用)「建议收藏」

    网线RJ45接口排线示意图(做网线备用)「建议收藏」网线RJ45接口排线示意图(做网线备用)RJ45有两种绕线方式,T-568A和T-568B。注意:绝大多数设备用的都是T-568B!!!请参照T-568B的线序!!!我的热门文章推荐多路视频直播用在线云导播切换的效果测试 如何把视频转换生成二维码,扫码直接播放? 有哪些网站上传视频是不会插入广告的? 怎么把视频生成二维码?微信扫二维码就可以观看?不要广告的 常用照片尺寸对照表,照片大小看这个表就对了 视频直播推流攻略(整理的各大平台推流界面) html5视频倍.

    2025年12月14日
    8
  • dlsym函数

    dlsym函数dlsym 的函数原型是 nbsp void dlsym void handle constchar symbol nbsp 该函数在文件中 nbsp handle 是由 dlopen 打开动态链接库后返回的指针 symbol 就是要求获取的函数的名称 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 函数返回值是 void 指向函数的地址 供调用使用

    2026年3月19日
    2
  • 【学习笔记】二元Logistic回归预测

    【学习笔记】二元Logistic回归预测目录 1 基本含义和思想 2 论文 3 进行回归预测的思路是什么 3 求逻辑回归模型的数学过程 3 1 改写函数 3 2 函数变换 3 3 得到离散概率 3 4 最大似然法 3 5 牛顿法 4 逻辑回归在论文 3 中的应用参考文章参考文献 1 基本含义和思想 Logistic 回归和线性回归最大的区别在于 Y 的数据类型 线性回归分析的因变量 Y 属于定量数据 而 Logistic 回归分析的因变量 Y 属于分类数据 分类数据指的是 Y 的结果不是一个值 量 而是一个类别 比如一件衣服的是否有人想购买 这里的 Y 是 是否愿意购买 属于分类

    2026年3月16日
    2
  • 即梦设计—手把手带你制作炫酷字体

    即梦设计—手把手带你制作炫酷字体

    2026年3月12日
    2
  • ClaudeCode和Codex的MCP有趣玩法

    ClaudeCode和Codex的MCP有趣玩法

    2026年3月16日
    1
  • Java开源博客源码完整汇总(持续更新)

    Java开源博客源码完整汇总(持续更新)程序员需要拥有一个属于自己的独立博客网站。所以我从网站收集了一些好的Java开源博客系统。既然是属于开源,当然支持我们广大程序员二次开发了。其实搭建属于自己的技术博客网站很简单,只需要一个域名,一台服务器,然后进行网站备案(个人备案很简单)就可以拥有属于自己的博客网站了。程序员一定要及早的打造个人独立IP,拥有自己的独立博客,学会扩大自己的影响力。在公司,你能力最多影响公司的同事。但是在互联网,拥有自己的网站,你就可以影响千千万万的程序员和即将入行的新手程序员1.OneBlog一个简洁美观、功能.

    2022年7月8日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号