Bearer Token身份验证和JWT是现代网络应用中常用的一种身份验证方式。Bearer Token身份验证基于HTTP头部Authorization字段,使用令牌进行身份验证。JWT是一种开放标准(RFC 7519),用于在各方之间安全地传输信息,特别适用于网络应用程序中的身份验证和授权场景。
以下是使用Node.js和express框架实现Bearer Token和JWT身份验证的示例代码:
const express = require('express'); const jwt = require('jsonwebtoken'); const bearerToken = require('express-bearer-token'); const app = express();
// 设置JWT密钥 const secretKey = 'mysecretkey';
// 添加中间件,解析Bearer Token app.use(bearerToken());
// 登录并生成JWT app.post('/login', (req, res) => { const { username, password } = req.body; // 假设使用用户名和密码进行登录 if (username === 'admin' && password === 'admin') { // 登录成功,生成JWT const token = jwt.sign({ username }, secretKey); res.json({ token }); } else { res.status(401).json({ error: 'Invalid username or password' }); } });
// 添加中间件,验证JWT app.use((req, res, next) => { const { token } = req; if (!token) { return res.status(401).json({ error: 'Unauthorized' }); } try { const decoded = jwt.verify(token, secretKey); req.username = decoded.username; next(); } catch (err) { return res.status(401).json({ error: 'Unauthorized' }); } });
// 验证成功,处理请求
app.get('/secure', (req, res) => {
res.send(Hello ${req.username}
);
});
app.listen(3000, () => console.log('Server listening on port 3000'));
以上示例中,我们首先使用express-bearer-token中间件来解析Bearer Token,然后在/login路由中生成JWT令牌并返回给客户端。在其余的路由中,我们在中间件中验证JWT,如果验证成功,则将版本插入req对象中,然后进行后续处理。
上一篇:BearerToken认证失败-相关性验证失败-未找到Cookie
下一篇:BearerToken身份验证是否与Access-Control-Allow-Credentials:false一起使用?