dify中为删除操作添加邮箱双重确认机制,需配置smtp邮件服务、修改api校验验证码、前端联动弹窗输入,校验通过后才执行软删及异步硬删。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify中为删除数据库等敏感操作添加人工邮箱双重确认机制,可防止误操作导致数据丢失。该机制要求用户在触发删除动作后,必须通过绑定邮箱接收并输入验证码,系统才执行真实删除逻辑。
配置Dify后端环境变量启用邮件服务
进入Dify项目根目录的 .env 文件,添加SMTP相关配置项:
【MAIL_DEFAULT_SEND_FROM】 必须设置为合法发信邮箱地址,否则验证码邮件无法发出;若使用QQ邮箱,需开启SMTP并获取专用密码而非登录密码。
MAIL_TYPE=smtp
MAL_HOST=smtp.qq.com
MAIL_PORT=587
MAIL_USERNAME=your_email@qq.com
MAIL_PASSWORD=your_smtp_password
MAIL_DEFAULT_SEND_FROM=your_email@qq.com
修改删除API接口接入验证码校验流程
定位到 api/controllers/dataset.py 中的 delete_dataset 函数,在函数开头插入验证码校验逻辑:
第一步:从请求体中提取 verification_code 字段和 email 字段;
第二步:调用 verify_email_code(email, verification_code) 方法比对Redis中存储的6位数字验证码(有效期5分钟);
第三步:校验失败则返回HTTP 400错误及提示“邮箱验证码错误或已过期”,【不执行后续任何数据库操作】;
第四步:校验成功后继续原有删除逻辑——先软删(更新status为archived),再异步触发硬删任务。
实现前端弹窗与邮箱发送联动
方法一:在Dataset列表页的删除按钮点击事件中,先发起POST请求至 /datasets/{id}/send-verification-email 接口;
方法二:后端收到请求后生成6位随机码,存入Redis(key为 email:verification:{email},TTL设为300秒),并调用SMTP发送含该码的HTML邮件;
方法三:前端收到响应后弹出模态框,要求用户输入邮箱收到的6位数字,并将该值与原始邮箱一并提交至删除接口。
注意:前端必须禁用删除按钮30秒,防止用户连续点击触发多次邮件发送。
部署后验证双因子流程是否生效
启动Dify服务后,登录管理员账号;
进入数据集管理页,点击任一数据集右侧的「删除」按钮;
观察是否弹出邮箱验证码输入框 → 查收绑定邮箱是否收到含6位数字的邮件 → 输入正确验证码后页面显示删除成功 → 登录数据库确认该数据集记录的status字段已更新为archived。










