CubeJS中使用Security Context同时按性别、年龄限制数据的方法咨询
Cube.js 多维度安全上下文权限控制实现
SECURITY_CONTEXT的每个属性为独立的上下文对象,不可链式调用多个属性后执行filter,你需要分别调用两个属性的filter方法,用SQL的AND运算符拼接两个过滤条件即可,示例代码如下:
cube(`Data`, { sql: `select * from my_table where ${SECURITY_CONTEXT.user_gender.filter(user_gender)} AND ${SECURITY_CONTEXT.user_age.filter(user_age)}`, // 其余cube配置 })
补充说明
- 单个
SECURITY_CONTEXT.<属性名>.filter(<表字段名>)会自动生成对应字段的合法过滤SQL片段,多个过滤条件直接用SQL逻辑运算符拼接即可,完全符合Cube.js的安全上下文使用规范 - 如果你需要兼容某个上下文属性为空时跳过对应过滤的场景,可以用条件判断动态拼接SQL:
cube(`Data`, { sql: `select * from my_table where 1=1 ${SECURITY_CONTEXT.user_gender ? `AND ${SECURITY_CONTEXT.user_gender.filter(user_gender)}` : ''} ${SECURITY_CONTEXT.user_age ? `AND ${SECURITY_CONTEXT.user_age.filter(user_age)}` : ''}`, // 其余cube配置 })
内容的提问来源于stack exchange,提问作者Bilel
相关产品推荐
相关产品推荐

