必须打通dify与supabase认证系统:先在supabase启用微信/支付宝等登录并保存配置,再通过dify插件或手动透传jwt获取用户id、邮箱等信息,最后在工作流中解析jwt并注入user_id用于权限控制查询。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中构建一个能识别用户身份、按权限响应的AI应用,必须让Dify与Supabase的认证系统打通,使会话状态可被工作流读取、用户ID可注入数据库查询上下文。
启用Supabase项目级身份验证
登录Supabase控制台,进入对应项目 → 左侧导航栏点击「Authentication」→ 点击「Providers」标签页。
勾选微信、支付宝、GitHub、Google、Apple等任一启用的提供商(如需本土化登录,【必须开启微信和支付宝】)→ 滚动到底部,点击「Save configuration」。
这一步不配置就无法在Dify中获取用户邮箱、ID或角色信息;跳过将导致后续所有基于用户身份的逻辑失效。
在Dify中接入Supabase认证状态
方法一:通过Dify插件自动同步会话
进入Dify管理后台 → 右上角点击「插件」→ 左侧点「Marketplace」→ 搜索“supabase”并安装官方Supabase插件。
安装完成后,在插件列表中点击该插件卡片 → 选择「API Key授权配置」→ 填入Supabase项目的URL和Service Role Key(【Service Role Key不可用于前端,仅限Dify后端可信调用】)→ 保存。
方法二:手动透传用户JWT至Dify工作流
Dify 3.9.2更新重点增强系统安全性,引入 Chainguard 安全基础镜像并同步社区版 CVE 修复,同时优化 OpenSearch 向量存储兼容性、插件参数传输机制及 Helm 部署配置。新增工作流模型节点缓存能力,可减少重复凭证查询,显著提升复杂工作流初始化速度,为企业级 AI 应用提供更稳定、高效的运行体验。
前端调用Supabase.auth.getSession()获取session对象 → 提取session.access_token → 在向Dify API发起请求时,将该token放入HTTP Header:Authorization: Bearer {access_token}。
Dify工作流中添加「HTTP请求」节点,以GET方式访问Supabase的/auth/v1/user端点(需携带上述Header)→ 解析返回的JSON,提取user.id、user.email、user.app_metadata.provider等字段供后续使用。
配置Dify工作流实现身份感知响应
第一步:新建工作流,添加「开始」节点。
第二步:添加「变量」节点,命名为「current_user」,类型设为「Object」,默认值留空。
第三步:添加「条件分支」节点,判断输入中是否包含 Authorization Header → 若存在,进入「JWT解析」子流程;若不存在,直接走游客逻辑(如返回“请先登录”提示)。
第四步:在「JWT解析」分支中,添加「代码」节点(Python),执行以下操作:
import jwt
payload = jwt.decode(input['Authorization'].split(' ')[1], options={"verify_signature": False})
return {"user_id": payload.get("sub"), "email": payload.get("email"), "role": payload.get("app_metadata", {}).get("provider", "anonymous")}
第五步:将解析结果写入「current_user」变量 → 后续所有数据库查询、RAG检索、回复生成步骤均可引用该变量中的user_id作为WHERE条件,例如:SELECT * FROM orders WHERE user_id = {{current_user.user_id}}。










