我需要向我的应用程序添加权限和角色,但是我不想逐个文件地逐个文件访问。我需要的角色种类是例如仅显示数据库中特定的记录,具体取决于所连接的用户。
举例:我有一个"contracts_types"
和一个"contracts"
表,在列出"contracts"
时,我将JOIN
与"contracts_types"
一起使用,以便同时显示合同类型,因此,如果合同类型不存在,则不会显示合同,我想做的是,每次用户连接时都创建某种视图,该视图应包含具有以下内容的表的图像:过滤器:
CREATE VIEW contracts_types AS SELECT * FROM contracts_types WHERE contractTypeId IN( USER AUTHORISED CONTRACTS TYPES IDS )
我不确定是否可行,如果存在,是否存在性能问题,是否为每个连接的用户在每个http请求上创建相同的视图,我的意思是,其他用户将被连接,并且相同的视图名称为创建后,我正在寻找一种类似的解决方案,无需在我所做的每个select语句中添加contractTypeId
过滤器,谢谢。
答案 0 :(得分:0)
“因此,如果合同类型不存在,则不会显示该合同”-这就是这样做的原因:
SELECT ...
FROM contracts AS c
JOIN contract_types AS ct ON ct.type = c.contract_type
还是您的问题涉及更多?
如果没有查询中的某种过滤器,则不能对表的行进行任何过滤。
SELECT ...
FROM contracts AS c
JOIN contract_types AS ct ON ct.type = c.contract_type
JOIN role_can_see AS ucs ON rcs.type = c.contract_type
WHERE rcs.role = ?
(并填写用户所属的角色)
如果用户有多个角色,则
WHERE rcs.role IN (...)
但这可以有效地自己实现“角色”。