目录
在Node.js中,nodejs登录成功生成token并验证通常涉及以下几个步骤:
- 安装必要的依赖包:常用的库包括 `
express`
用于创建服务器,`jsonwebtoken`
用于处理JWT(JSON Web Token),`express-jwt`用于
自动验证JWT并将解码后的Token信息附加到请求对象上,`body-parser`
用于解析请求体。 - 创建Express应用:设置基本的Express应用和中间件。
- 生成Token:在用户登录成功后生成JWT。
- 验证Token:在需要保护的路由中间件中验证Token的有效性。
- 错误处理:为了更好地处理认证错误。
1.安装必要的依赖包
npm install express jsonwebtoken express-jwt body-parser
2.创建Express应用
const express = require('express');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
const expressJwt = require('express-jwt');
const app = express();
const PORT = 3000;
// 你的密钥
const SECRET_KEY = 'your_secret_key';
app.use(bodyParser.urlencoded({ extended: true }));
app.listen(PORT,()=>{
console.log(`server runnning at 127.0.0.1:${PORT}`);
})
3.生成token
在用户登录成功后生成Token。
app.post('/login', (req, res) => {
const { username, password } = req.body;
// 验证用户名和密码(这里只是一个示例,实际应用中应查询数据库)
if (username === 'admin' && password === 'admin') {
// 生成Token
const token = jwt.sign({ username }, SECRET_KEY, { expiresIn: '1h' });
res.send({ code:1,msg:'登录成功',data:token });
} else {
res.status(401).send({code:0,msg:'账号或密码错误'});
}
});
4.使用 `express-jwt`
验证Token
全局使用 express-jwt
中间件进行Token验证。
// 使用express-jwt中间件进行Token验证
app.use(
expressJwt({ secret: SECRET_KEY, algorithms: ['HS256'] }).unless({ path: ['/login'] })
);
// 受token验证保护的路由
app.get('/protected', (req, res) => {
res.send('This is a protected route');
});
在需要保护的路由中使用 express-jwt
中间件进行Token验证。
// 使用express-jwt中间件进行Token验证
const authenticateJwt = expressJwt({ secret: SECRET_KEY, algorithms: ['HS256'] });
// 受token验证保护的路由
app.get('/protected',authenticateJwt, (req, res) => {
res.send('This is a protected route');
});
5. 错误处理
为了更好地处理认证错误,可以添加一个错误处理中间件:
app.use((err, req, res, next) => {
if (err.name === 'UnauthorizedError') {
res.status(401).send({code:0,msg:'身份验证失败'});
} else {
next(err);
}
});
通过上述步骤,你可以使用 `express-jwt`
在Node.js应用中实现简便且安全的Token验证功能。