express怎么写token
时间: 2024-04-23 18:03:09 浏览: 24
在 Express 中,使用 JSON Web Token (JWT) 生成和验证 token。下面是一个简单的示例:
首先,安装 jsonwebtoken 模块:
```
npm install jsonwebtoken
```
然后,在需要生成 token 的地方引入模块:
```javascript
const jwt = require('jsonwebtoken');
```
接下来,创建一个路由,用于生成 token:
```javascript
app.post('/login', (req, res) => {
// 在这里验证用户的用户名和密码
const username = req.body.username;
const password = req.body.password;
// 如果验证通过,则生成 token
const token = jwt.sign({ username }, 'secret key', { expiresIn: '1h' });
// 将 token 返回给客户端
res.json({ token });
});
```
在上面的示例中,使用 `jwt.sign()` 方法生成 token。第一个参数是一个对象,用于存储需要在 token 中保存的数据。第二个参数是一个字符串,用于指定加密的密钥。第三个参数是一个选项对象,用于设置 token 的过期时间。
最后,客户端在需要访问受保护的路由时,需要在请求头中传递 token:
```javascript
axios.get('/protected', {
headers: {
Authorization: `Bearer ${token}`
}
});
```
在服务器端,可以使用 `jwt.verify()` 方法验证 token:
```javascript
app.get('/protected', (req, res) => {
const token = req.headers.authorization.split(' ')[1];
try {
const decoded = jwt.verify(token, 'secret key');
console.log(decoded); // { username: 'xxx', iat: xxx, exp: xxx }
// 在这里处理受保护的请求
res.json({ message: 'Access granted' });
} catch (err) {
res.status(401).json({ message: 'Invalid token' });
}
});
```
在上面的示例中,使用 `jwt.verify()` 方法验证 token,并且从 token 中解码出存储的数据。如果验证通过,则处理受保护的请求,否则返回 401 错误。