必须先用逻辑非排除黑名单用户,再用逻辑或校验白名单IP,否则会导致越权访问;逻辑非节点需紧接身份解析节点,输入表达式为context.user.role == "guest" || context.user.is_blocked == true;逻辑或节点支持显式枚举或引用环境变量WHITELIST_IP_RANGES;连线顺序为身份解析→逻辑非→逻辑或,true出口连允许通行,false连拒绝访问。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在扣子(Coze)工作流中对用户身份、IP段、时间窗口三重条件做组合判断,必须用逻辑非(NOT)排除黑名单用户,再用逻辑或(OR)覆盖多地域白名单,否则单一条件匹配会导致越权访问。
添加逻辑非节点排除高危账号
在工作流画布空白处点击「+ 添加节点」→ 选择「逻辑」→ 点击「逻辑非」;【该节点必须紧接在身份解析节点之后,否则无法获取user_id字段】。
双击打开逻辑非节点配置面板,在「输入表达式」栏填入:context.user.role == "guest" || context.user.is_blocked == true;这个表达式会把游客角色和被封禁账号直接判为false,后续分支将跳过其请求。
注意:不要写成!context.user.is_blocked,因为未登录用户context.user为空,会触发空指针异常导致整个流程中断。
配置逻辑或节点聚合多源白名单
方法一:显式枚举IP段
拖入「逻辑或」节点 → 双击编辑 → 在「条件列表」中逐条添加:
① context.request.ip.match("203.100.128.0/17")
② context.request.ip.match("192.168.10.0/24")
③ context.request.headers["X-Forwarded-For"].includes("10.200.5.1")
方法二:引用外部策略变量
先在Bot设置→环境变量中新增WHITELIST_IP_RANGES,值设为["203.100.128.0/17","192.168.10.0/24"];【必须用JSON数组格式,字符串引号不可省略】;然后在逻辑或节点中写:context.request.ip.in_ranges(env.WHITELIST_IP_RANGES)。
串联逻辑非与逻辑或实现最终校验
第一步:将「身份解析」节点的输出箭头拖至「逻辑非」节点输入端;
第二步:将「逻辑非」节点的false出口连接至「逻辑或」节点输入端;
第三步:将「逻辑或」节点的true出口连向「允许通行」分支,false出口连向「拒绝访问」分支。
这一步不能颠倒顺序——如果先做逻辑或再做逻辑非,会被白名单IP绕过角色校验;必须先筛掉黑名单用户,再验证其是否满足任一可信来源条件。
完成连线后点击右上角「发布」,新策略即时生效。无需重启Bot,也不需要等待缓存刷新。


















