// 示例代码:基于JWT的登录验证
const jwt = require('jsonwebtoken');
const SECRET_KEY = 'your_secret_key';
function generateToken(user) {
return jwt.sign({ id: user.id, role: user.role }, SECRET_KEY, { expiresIn: '1h' });
}
function verifyToken(token) {
try {
return jwt.verify(token, SECRET_KEY);
} catch (err) {
return null;
}
}
// 模拟用户数据
const users = [
{ id: 1, username: 'alice', password: 'password123', role: 'student' },
{ id: 2, username: 'bob', password: 'mypassword', role: 'admin' }
];
// 登录接口
app.post('/login', (req, res) => {
const { username, password } = req.body;
const user = users.find(u => u.username === username && u.password === password);
if (!user) return res.status(401).send('Invalid credentials');
const token = generateToken(user);
res.json({ token });
});
// 中间件:权限检查
function checkRole(role) {
return (req, res, next) => {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
const decoded = verifyToken(token);
if (!decoded || decoded.role !== role) return res.status(403).send('Access denied');
req.user = decoded;
next();
};
}
// 示例路由:仅管理员可访问
app.get('/admin', checkRole('admin'), (req, res) => {
res.send('Welcome to the admin dashboard!');
});
]]>
本文通过对话形式介绍了高校中统一身份认证系统的功能设计与实现细节,并提供了基于JWT的登录验证示例代码。该系统支持多种登录方式和权限管理,同时强调了数据安全的重要性。