node.js—构建一个节点用户访问控制管理模块,该模块与mysql和express一起作为中间件使用

uxh89sit  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(307)

我必须建立一个授权模块,允许用户使用一些功能。在node中,我使用express和mysql以及sequelize作为orm。我没有角色,但只有mysql db中的users表和permissions表:
用户示例(js版本)

users = [
{ userid: "1",
  username: "arthur",
  password: "excalibur"
},
{ userid: "2",
  username: "merlin",
  password: "occhetipoccheti"
},
{ userid: "1",
  username: "morgana",
  password: "imnotevil"
}]

权限

permissions = [
{ permissionid: "1",
  action: "create",
  description: "create a file"
},
{ permissionid: "2",
  action: "read",
  description: "reada file"
},
{ permissionid: "3",
  action: "delete",
  description: "delete a file"
},
{ permissionid: "4",
  action: "update",
  description: "update a file"
}]

我的目的是创建一个模块,并将其用作express中间件。我缺乏这项工作的设计模式(我是一个前端开发人员),我尝试了很多npm包(accesscontrol、acl、connect roles等),但现在我想创建自己的代码,因为我不需要基于角色的授权,而是通过匹配用户和权限ID的第三个表进行简单检查:
用户\u权限

users_permissions = [
{ userid: "1",
  permissionid: "3"
},
{ userid: "1",
  permissionid: "2"
},
{ userid: "2",
  permissionid: "1"
},
{ userid: "3",
  permissionid: "1"
},
{ userid: "3",
  permissionid: "3"
},]

我读过一些类似的主题:node js和访问控制,使用express在node js中管理用户,mongodb作为服务器数据库
但其中很多都是专注于角色,我不需要角色。。。我该怎么办?有人能帮我提供一个教程链接吗?我想知道在node中设计模块的最佳方法。
基本上我想建立的功能是
示例module.can

can(userId, permissionid) {
  users_permissions.forEach(element => {
    if (userId == element.userid) {
      if (element.permissionid == permissionid) {
        console.log('true');
      }
    }
  });
}

谢谢你的夸奖

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题