import express from 'express';
import { checkAccess, setup } from 'express-jwt-permissions';
// 假设你已经有了一个JWT密钥,并且已经设置了角色和权限
const jwtSecret = 'YOUR_JWT_SECRET';
const roles = ['user', 'admin'];
const permissions = {
'user': {
'read': ['articles', 'comments'],
'create': ['comments']
},
'admin': {
'read': ['articles', 'comments', 'users'],
'create': ['articles', 'comments', 'users'],
'update': ['articles', 'comments', 'users'],
'delete': ['articles', 'comments', 'users']
}
};
// 初始化express-jwt-permissions
setup({
roles,
permissions,
jwtSecret
});
const app = express();
// 使用中间件保护路由
app.get('/api/protected', checkAccess('read', 'articles'), (req, res) => {
res.json({ message: 'Protected route accessed' });
});
// 启动服务器
app.listen(3000, () => {
console.log('Server running on port 3000');
});
这个示例代码展示了如何在Express应用中使用express-jwt-permissions
来保护路由。首先,我们初始化了这个库,并通过setup
函数提供了角色、权限和JWT密钥。然后,我们使用checkAccess
中间件来保护一个路由,并且指定了访问该路由需要的权限。最后,我们启动了一个Express服务器,并且在控制台输出了服务运行的消息。