node server如何实现登录生成token及接口校验token

Posted chi1130

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node server如何实现登录生成token及接口校验token相关的知识,希望对你有一定的参考价值。

创建方法

在utils下创建一个token.js 抛出setToken,getToken方法

var jwt = require("jsonwebtoken");
var jwtSecret = "write messages"; //签名
//登录接口 生成token的方法
var setToken = function(_id, openid) 
  return new Promise((resolve, reject) => 
    //expiresln 设置token过期的时间
    // openid: openid, _id: _id  传入需要解析的值( 一般为用户名,用户id 等)
    const rule =  _id: _id, openid: openid ;
    // const token = 'Bearer ' + jwt.sign(rule, jwtSecret,  expiresIn: '36000' );
    const token = jwt.sign(rule, jwtSecret, expiresIn: '7d');
    resolve(token);
  );
;

//各个接口需要验证token的方法
var getToken = function(token) 
  return new Promise((resolve, reject) => 
    if (!token) 
      console.log("token是空的");
      reject(
        error: "token 是空的"
      );
     else 
      var info = jwt.verify(token, jwtSecret);
      // console.log('info: ', info);
      resolve(info); //解析返回的值(sign 传入的值)
    
  );
;

module.exports = 
  setToken,
  getToken
;

使用

var express = require('express')
var router = express.Router()
const Like = require('../models/Like') //引入模块模型
var vertoken = require('../utils/token') //引入token
// 个人点赞列表
router.get('/article/like/list', (req, res) => 
  vertoken
    .getToken(req.headers.token)
    .then((data) => 
      Like.find(
        userId: data._id,
      )
        .then((likes) => 
          res.json(
            code: 200,
            result: 
              data: likes,
            ,
            message: '请求成功!',
          )
        )
        .catch((err) => 
          console.log('err:', err)
        )
    )
    .catch((error) => 
      console.log('error:', error)
      res.json( code: 401, message: 'token失效了' )
    )
)

完整代码

前端
node服务端

以上是关于node server如何实现登录生成token及接口校验token的主要内容,如果未能解决你的问题,请参考以下文章

node server如何实现登录生成token及接口校验token

node+mongodb+vue实现一个写寄语小程序

node+mongodb+vue实现一个写寄语小程序

node+mongodb+vue实现一个写寄语小程序

JWT生成token及过期处理方案

node使用JsonWebToken 生成token,完成用户登录登录检测