首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用基于角色的权限的casl创建用户

使用基于角色的权限的casl创建用户
EN

Stack Overflow用户
提问于 2020-07-28 18:41:57
回答 1查看 560关注 0票数 0

我正在尝试使用casl-mongoose进行基于角色的身份验证

role.js

代码语言:javascript
复制
    module.exports = function (user) {
      const ability = defineAbility((can) => {
        switch (user) {
          case "admin":
            can(["create", "read", "update", "delete"], "User");
            break;
          case "user":
            can("read", "User", { role: "user" });
            break;
               }
           });

     return ability;
     };

user.js

代码语言:javascript
复制
const defineAbilitiesForUser = require("../middleware/roles");

user = new User(_.pick(req.body, ["name", "email", "password", "role"]));
const ability = defineAbilitiesForUser(req.user.userRole);
// req.ability.throwUnlessCan("create", user);
ForbiddenError.from(ability).throwUnlessCan("create", user);

我想知道如何在casl中使用"create“,即使我正确使用了ForbiddenError。

代码语言:javascript
复制
ForbiddenError: Cannot execute "create" on "User"
    at Function.i.from (/home/madhu/Madhu/JavaScript/codedigital/casl_final/node_modules/@casl/ability/dist/umd/index.js:1:7009)
    at /home/madhu/Madhu/JavaScript/codedigital/casl_final/routes/users.js:52:18
    at processTicksAndRejections (internal/process/task_queues.js:97:5)

json对象

代码语言:javascript
复制
req.user : admin

{
    "name": "aaa",
    "email": "aaa@email.com",
    "password": "password",
    "role": "user"
    
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-29 15:44:57

我刚刚测试了您的代码,如果您传递"user"而不是req.user.userRole,您将无法创建用户,因为您的权限说明角色为" user“的用户只能读取角色为" user”的用户。

如果你传递了"admin",那么一切都是正常的,并且不会抛出错误。

指向repl - https://repl.it/@stalniy/so-63132256的链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63132256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档