express.js中具有权限的体系结构问题
我正在Express.js上构建一些应用程序,遇到了权限方面的架构问题 示例资源:express.js中具有权限的体系结构问题,express,architecture,permissions,authorization,relationship,Express,Architecture,Permissions,Authorization,Relationship,我正在Express.js上构建一些应用程序,遇到了权限方面的架构问题 示例资源: 组织,用户,单位,资源 每个用户可以属于多个组织,每个组织可以有多个单元,每个单元可以有多个资源 假设每个用户都可以添加任意数量的单元和资源。问题来了,因为应用程序必须检查正在添加的资源是否实际添加到了单元,该单元属于组织,该组织拥有执行此查询的用户 该结构是示例性的,在实际应用中,它将更加复杂,因此“向上移动到阶梯”这样的方法可能是不够的 你们中有谁知道如何以最有效的方式解决这个问题吗?这些关系需要建立在数据库
组织
,用户
,单位
,资源
每个用户
可以属于多个组织
,每个组织
可以有多个单元
,每个单元
可以有多个资源
假设每个用户
都可以添加任意数量的单元
和资源
。问题来了,因为应用程序必须检查正在添加的资源是否实际添加到了单元
,该单元属于组织
,该组织拥有执行此查询的用户
该结构是示例性的,在实际应用中,它将更加复杂,因此“向上移动到阶梯”这样的方法可能是不够的
你们中有谁知道如何以最有效的方式解决这个问题吗?这些关系需要建立在数据库中,我觉得你们需要像mysql这样的关系数据库()
下面是创建第一个表结构的示例代码,如果您还需要用户与单元或资源之间的链接,则可能需要说明:
CREATE TABLE Users (
userid SERIAL PRIMARY KEY,
username VARCHAR(100) UNIQUE KEY,
email VARCHAR(256),
password VARCHAR(256),
created_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_on TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
CREATE TABLE Organisation (
orgid SERIAL PRIMARY KEY,
organisation VARCHAR(140) UNIQUE KEY
);
CREATE TABLE User2Organisation (
userid BIGINT UNSIGNED NOT NULL,
orgid BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (userid) REFERENCES Users(userid),
FOREIGN KEY (orgid) REFERENCES Organisation(orgid),
PRIMARY KEY (userid,orgid)
);
CREATE TABLE Units (
unitid SERIAL PRIMARY KEY,
unit VARCHAR(140) UNIQUE KEY,
orgid BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (orgid) REFERENCES Organisation(orgid)
);
CREATE TABLE Resources (
resourceid SERIAL PRIMARY KEY,
resource VARCHAR(140) UNIQUE KEY,
unitid BIGINT UNSIGNED NOT NULL,
FOREIGN KEY (unitit) REFERENCES Units(unitid)
);
这只是数据库设计的一个起点。此外,视图可能有助于检查用户是否具有对其的正确访问权限。您的意思是如何授权执行这些操作的api端点?