后端返回token完整案例
时间: 2023-12-16 07:03:15 浏览: 31
好的,以下是一个后端返回token的完整案例:
首先,前端向后端发送登录请求,并提供用户名和密码。
后端接收到请求后,验证用户名和密码是否匹配,如果匹配则生成一个token,并将该token存储在后端的数据库中。
然后,后端将该token返回给前端,前端保存该token。
后端返回token的格式可以是一个JSON对象,例如:
```json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}
```
其中,token是一个由后端生成的字符串,包含了用户的身份信息和其他需要存储的信息。前端在每次请求后端时,将该token作为请求头部的Authorization字段发送给后端,后端通过解析该token来验证用户的身份。
相关问题
后端返回token完整代码案例
好的,以下是一个后端返回token的完整代码案例,使用Node.js和Express框架:
```javascript
const express = require('express');
const jwt = require('jsonwebtoken');
const app = express();
const port = 3000;
const secretKey = 'my_secret_key';
// 登录接口
app.post('/login', (req, res) => {
const { username, password } = req.body;
// 验证用户名和密码是否匹配
if (username === 'admin' && password === '123456') {
// 生成token
const token = jwt.sign({ username }, secretKey, { expiresIn: '1h' });
// 将token存储在数据库中
// 返回token给前端
res.json({ token });
} else {
res.status(401).json({ message: 'Invalid username or password' });
}
});
// 需要进行身份验证的接口
app.get('/protected', (req, res) => {
const token = req.headers.authorization.split(' ')[1];
// 验证token
jwt.verify(token, secretKey, (err, decoded) => {
if (err) {
res.status(401).json({ message: 'Invalid token' });
} else {
res.json({ message: 'Hello, ' + decoded.username });
}
});
});
app.listen(port, () => {
console.log(`Server listening at http://localhost:${port}`);
});
```
在上面的代码中,我们使用了jsonwebtoken库来生成和验证token。在登录接口中,如果用户名和密码匹配,就生成一个token并返回给前端。在需要进行身份验证的接口中,我们从请求头部的Authorization字段中提取出token,并验证其合法性。如果token验证通过,就返回一条欢迎消息给前端。
后端判断token过期
在后端判断 token 过期通常有两种方式:
1. 基于时间戳的过期判断:在生成 token 时,将当前时间戳和过期时间戳写入 token 中。在每次请求时,后端可以解析 token 中的时间戳和过期时间戳,判断 token 是否过期。
2. 基于黑名单的过期判断:在用户退出登录或者修改密码等操作时,将该用户的 token 加入到一个黑名单中。在每次请求时,后端可以判断 token 是否在黑名单中,如果是,则说明该 token 已经失效。
无论哪种方式,对于过期的 token,后端需要返回相应的错误信息给前端,让用户重新登录或者刷新 token。