首先,我们需要了解身份认证的基本概念和流程。身份认证是指验证用户所提供的身份信息是否正确和有效。在前后端分离的应用中,身份认证通常采用 token 认证的方式,即客户端在登录后,向服务端获取 token 并保存到本地,后续的每次请求需要带上这个 token 来进行身份认证。在 node.js 中,主要使用 express 和 jsonwebtoken 两个库来实现身份认证。
以下是 node.js 实现身份认证的示例代码的完整攻略:
第一步:安装依赖
在使用示例代码之前,我们需要先安装一些依赖。在命令行中运行以下命令:
npm install express jsonwebtoken body-parser
这里安装 express 和 jsonwebtoken 两个库,以及 body-parser 来解析请求体。
第二步:创建 express 应用
我们需要创建一个 express 应用来处理请求和响应。在项目的根目录创建一个 app.js
文件,输入以下代码:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.listen(3000, () => console.log('Server started on port 3000'));
这段代码创建了一个 express 应用,并使用 body-parser 中间件来解析请求体。我们还监听了 3000 端口并输出了一条启动提示信息。
第三步:创建登录接口
我们需要创建一个登录接口来进行身份验证,以下是一段示例代码:
const jwt = require('jsonwebtoken');
app.post('/login', (req, res) => {
const { username, password } = req.body;
// TODO: 实现用户和密码验证逻辑
// 用户名和密码验证通过后,生成 token 并返回
const token = jwt.sign({ username }, 'secret_key');
res.json({ token });
});
这段代码处理了一个 POST 请求 /login
,获取请求体中的用户名和密码,并执行用户和密码验证逻辑。如果验证通过,就生成一个 token 并返回给客户端。
第四步:创建中间件验证 token
我们需要创建一个中间件来验证 token 是否有效。以下是一段示例代码:
function verifyToken(req, res, next) {
const token = req.headers['authorization'];
if (!token) {
return res.status(401).json({ message: '未提供 token' });
}
try {
const decoded = jwt.verify(token, 'secret_key');
req.user = decoded.username;
next();
} catch (err) {
res.status(401).json({ message: 'token 无效' });
}
}
这个中间件从请求头中获取 token,然后解密 token 并把用户名存到 req.user
上。如果解密失败,就返回 401 状态码和错误信息。
第五步:创建需认证的接口
我们需要创建一些需要认证的接口来测试我们的身份验证实现。以下是一段示例代码:
app.get('/books', verifyToken, (req, res) => {
const { user } = req;
res.json({ user, books: ['book1', 'book2'] });
});
这段代码创建了一个 GET 请求 /books
,并使用 verifyToken
中间件来验证 token 的有效性。在回调函数中,我们可以通过 req.user
来获取到认证通过的用户名,然后返回一些书籍数据给客户端。该接口只有在 token 验证通过后才能访问。
以上是一个基本的身份认证实现,当然实际应用中还需要实现更多细节。例如 token 过期、token 黑名单、刷新 token 等。同时,需要注意将密钥等敏感信息放在配置文件或环境变量中,避免泄露。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:node.js实现身份认证的示例代码 - Python技术站