z0i*_*3rg 1 javascript permissions rest feathersjs feathers-authentication
我正在尝试使用管理员、超级管理员等用户角色创建一些 REST API。我试图通过使用feathers-permissions模块来实现这一点,但没有工作示例和互联网。你曾经处理过这样的任务吗?我现在做的是:
feathers generate app然后feathers generate authentication。接下来我应该做什么?
在 Feathers 中实现权限和角色的秘诀在于,Hooks确实提供了您需要的一切以及您可能想要的所有灵活性。确实没有必要花时间寻找单独的模块并学习它的 API。
将权限(通常只是字符串)存储在用户的数组(或permissions基于用户 ID 的单独服务)中,然后在before挂钩中检查是否允许用户执行该挂钩注册的操作(此处为调用权限messages::create),如果没有,则抛出Feathers 错误:
const { Forbidden } = require('feathers-errors');
app.service('messages').hooks({
before: {
create: [ context => {
// `params.provider` is set for any external access
// usually we don't need to check permissions for internal calls
const isExternal = !!context.params.provider;
if(isExternal && !context.params.user.permissions.includes('messages::create')) {
throw new Forbidden('You are not allowed to access this');
}
}]
}
});
Run Code Online (Sandbox Code Playgroud)
此模式也可以使用 Node.js 的任何现有权限模块来实现。Feathers-permissions是一个简单的模块,可以更轻松地做到这一点。
有关更多信息,另请参阅有关FeathersJS 中的访问控制策略以及使用 CASL 和 Feathers 进行 Easy API 授权的博客文章。
| 归档时间: |
|
| 查看次数: |
2588 次 |
| 最近记录: |