21xrx.com
2025-03-26 14:11:51 Wednesday
文章检索 我的文章 写文章
使用 Node.js 的 Token 进行接口验证
2023-07-03 12:12:19 深夜i     10     0
Node js Token 接口验证

随着互联网技术的不断发展和应用,网络安全问题日益引人关注。在前后端交互过程中,接口验证是一项不可忽视的安全措施。传统的基于用户名和密码的验证方式存在某些缺陷,比如信息泄露、密码不安全等问题。因此,目前很多互联网企业和开发者都采用了 Token 验证方式来增加系统的安全性和可靠性。

Token 是一种特殊的字符串,可以在客户端和服务器端之间传递,用于标识某个用户的身份和权限。客户端在登录成功后会拿到一个 Token,然后把 Token 带在每个请求的 header 中发给服务器端,服务器端可以通过解密 Token 来判断该请求是否合法。如果 Token 验证失败,服务器端会返回相应的错误码,从而保证接口的安全性和保密性。

Node.js 是一种非常流行的后端开发语言,它具有高效、快速、稳定等优点,非常适合进行接口验证。Node.js 配合 Express 框架可以实现简单易用的 Token 验证方式。下面是一个具体的实现步骤:

1. 安装相关依赖

安装 jsonwebtoken 和 express-jwt 两个依赖库,它们分别用于生成 Token 和验证 Token。

npm install jsonwebtoken express-jwt --save

2. 生成 Token

当用户在客户端输入正确的用户名和密码后,服务器端可以生成一个 Token 并返回给客户端,代码如下:

const jwt = require('jsonwebtoken');
const token = jwt.sign( username: 'admin', 'secret', { expiresIn: '1h' });
return res.json(
  message: '登录成功');

其中,第一个参数为存储在 Token 中的数据,第二个参数为私钥,第三个参数为 Token 的有效期。

3. 验证 Token

在 Express 中,可以使用 express-jwt 中间件来验证 Token。当客户端发送请求时,中间件会自动解密 Token 并把解密后的数据存放在 req.user 对象中,代码如下:

const express = require('express');
const jwt = require('jsonwebtoken');
const expressJwt = require('express-jwt');
const app = express();
const secret = 'mysecretkey';
app.use(expressJwt({
  secret: secret, // 私钥
  algorithms: ['HS256'], // 加密算法
}).unless({
  path: ['/api/login'// 白名单,不需要验证 Token 的路径
}));
app.use(function (err, req, res, next) {
  if (err.name === 'UnauthorizedError') {
    res.status(401).send('invalid token…');
  }
});
// 定义需要验证 Token 的接口
app.get('/api/user', function (req, res) {
  const user = req.user;
  console.log(user);
  return res.json({
    code: 200,
    message: 'success',
    data:
      name: 'Tom'
  });
});
app.listen(3000, function () {
  console.log('Server is running on port 3000!');
});

在 unless 函数中可以指定白名单,即某些接口不需要验证 Token,比如登录接口。express-jwt 中间件会自动解密 Token 并把解密后的数据存放在 req.user 对象中,开发者可以直接在路由处理函数中使用。

Token 验证方式在互联网应用中应用非常广泛,它具有安全性强、可扩展性好、实现简单等优点,因此被广泛应用于前后端交互中。通过使用 Node.js 的 Token 验证方式,开发者可以快速、简单的实现接口验证,为系统安全提供保障。

  
  

评论区