jsonwebtoken生成token和解析

先上npm地址

jsonwebtoken:jsonwebtoken - npm

express-jwt:express-jwt - npmps

const express = require('express');
const jwt = require('jsonwebtoken');
const { expressjwt: expressJWT} = require('express-jwt')

const app = express();

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

// 生成Token
const token = jwt.sign({ username: 'user123' }, secretKey, { expiresIn: '1h' });

// 验证Token1(在req.auth里获取解析值)
app.use(expressJWT({ 
    secret: config.jwtSecretKey, 
    algorithms:["HS256"],
    credentialsRequired: false,
    getToken: function fromHeaderOrQuerystring(req) {
        if ( req.headers.authorization && req.headers.authorization.split(" ")[0] === "Bearer" ) {
            return req.headers.authorization.split(" ")[1];
        } else if (req.query && req.query.token) {
            return req.query.token;
        }
        return null;
    } 
}).unless({ path: ['/api/reguser','/api/login'] }))

//验证Token2
//(这里获取到的token值一定要是jwt生成的token,不能添加其他东西,否则会报incalid Token)
const router = express.Router()
function verifyToken(req, res, next) {
    const token = req.headers.authorization;
    
    if (!token) {
      return res.status(403).json({ code: -1, message: '请登录后再进行操作' });
    }
  
    jwt.verify(token, config.jwtSecretKey, (err, decoded) => {
      if (err) {
        return res.status(500).json({ code: -1, message: 'token验证失败'+err });
      }
  
      req.user = decoded;
      next();
    });
}
router.get('/userinfo',verifyToken, (req, res) => {
  res.send(`Welcome ${req.user.username}!`);
});)


// 启动服务器
app.listen(3000, () => {
  console.log('Server started on port 3000');
});

相关推荐

  1. jsonwebtoken生成token和解

    2023-12-10 06:20:05       67 阅读
  2. jsonwebtoken使用HS256生成token失败

    2023-12-10 06:20:05       55 阅读
  3. C#生成Token字符串

    2023-12-10 06:20:05       54 阅读
  4. 2-token生成

    2023-12-10 06:20:05       35 阅读
  5. Jwt生成token以及解析token

    2023-12-10 06:20:05       48 阅读
  6. flask中生成token,校验tokentoken装饰器

    2023-12-10 06:20:05       66 阅读
  7. R语言:使用 readr 包进行数据导入和解

    2023-12-10 06:20:05       31 阅读
  8. android用Retrofit进行网络请求和解

    2023-12-10 06:20:05       17 阅读
  9. flask 实现token生成以及携带token请求接口

    2023-12-10 06:20:05       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-10 06:20:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-10 06:20:05       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-10 06:20:05       87 阅读
  4. Python语言-面向对象

    2023-12-10 06:20:05       96 阅读

热门阅读

  1. C++指针作业

    2023-12-10 06:20:05       56 阅读
  2. 滑动窗口(单调队列)

    2023-12-10 06:20:05       61 阅读
  3. 常用设计模式

    2023-12-10 06:20:05       56 阅读
  4. 设计产品原型的心得

    2023-12-10 06:20:05       50 阅读
  5. 被遗忘的书籍

    2023-12-10 06:20:05       65 阅读
  6. Merge k Sorted Lists

    2023-12-10 06:20:05       64 阅读
  7. HTTPS加密:保障网络安全的重要一环

    2023-12-10 06:20:05       58 阅读