📖Node使用jsonwebtoken制作一个会过期的token

那个后台管理的项目现在做到用户Token这一步了

这里使用的是 jsonwebtoken

1:安装 jsonwebtoken

  1. npm i jsonwebtoken

Node.js 后端设置

1.创建新的 JS 文件

  1. //token.js
  2. const jwt = require("jsonwebtoken");//引入jsonwebtoken
  3. const SECRETKEY = 'AEFU237AWSbsrfoif38fasj';//设置token私钥
  4.  
  5. function Tokenverify(token){//用来解密token
  6. return jwt.verify(token, SECRETKEY, function(err,decode){
  7. if(err){
  8. return false;
  9. }else {//这里可以用解密出来的信息去跟sql的信息做一下比较是否正确,我这里就不比较了
  10. return decode;
  11. }
  12. })
  13. }
  14.  
  15. function Settoken(newobj){//创建新的Token,expiresIn为Token的过期时间,这里是10秒
  16. return jwt.sign(newobj,SECRETKEY,{expiresIn:10});
  17. }
  18.  
  19. module.exports = {Tokenverify,Settoken}//暴露两个方法
  1. //router.js
  2. const {Settoken} = require("./token/token.js")//引入方法
  3.  
  4. router.post("/userlogin",(req,res) => {//用户登录
  5. let keysql ='select * FROM usertable where username = "'+req.body.from.name+'"';//查询该用户
  6. conn.query(keysql,(e,r)=>{
  7. if(e){
  8. console.log(e)
  9. return e;
  10. }
  11. let base = Buffer.from(req.body.from.pass, 'base64')//解密密码
  12. let pass = base.toString();
  13. if(r.length > 0){//查询有无此用户
  14. if(pass == r[0].password){//判断用户密码是否正确
  15. let newobj = {id:r[0].id,account:r[0].account,password:r[0].password}
  16. let token = Settoken(newobj);//获取token
  17. let data={body:r[0],token:token}
  18. res.json(new Result({code:200,msg:'登录成功',data:data}))//返回Token
  19. }else{
  20. res.json(new Result({code:500,msg:'密码错误!'}))
  21. }
  22. }else{
  23. res.json(new Result({code:500,msg:'未检测到该用户!'}))
  24. }
  25. })
  26. })
  27.  
  28. module.exports = {router} //暴露router
  1. //app.js
  2. const {Tokenverify} = require("./token/token.js")
  3. const {router} = require('./router.js')//引入接口文件
  4.  
  5. let no_router = ['/userlogin']//白名单
  6. app.use(async (req,res,next)=>{
  7. if (no_router.indexOf(req.url) != -1) {//说明此为白名单不需要验证 直接走下一个路由
  8. next();
  9. }else if(req.method == 'OPTIONS'){
  10. next();
  11. }else if(Tokenverify(req.headers.token)){//验证用户token
  12. next();//用户Token没问题
  13. }else{
  14. res.send({//报错,用户Token过期
  15. code: 4013,
  16. msg: '登陆信息失效,请重新登录'
  17. })
  18. }
  19. })

标签

🧐发表评论

请将下面的 时钟 放到右边的灰色圆圈中