Skip to content

v1.16.1-beta.1

Pre-release
Pre-release

Choose a tag to compare

@barlowliu barlowliu released this 21 Jul 06:38
· 2 commits to 1.16.0 since this release

⚠️ 预发布版本:本版本在 1.16.0 基础上新增单个功能,已通过后端 pytest、前端 Vitest/tsc/lint 及本地容器验证,但尚未经过严格的生产级回归。生产环境请先在自有环境完成验证后再使用。

功能概述:WebApp 访问认证开关(per-app)

为每个应用新增「访问认证」开关,控制已发布 Web App 是否需要登录平台(Console)账号才能访问:

  • 默认开启:延续既有行为,访问已发布 Web App 需登录平台账号(Web 公开页登录鉴权)。
  • 关闭后:任何人无需登录即可匿名访问该应用的 Web App,适合面向外部用户的公开应用。
  • 开关入口:Console 应用概览页的 Web App 卡片(「访问认证」Switch,附悬停帮助 Tooltip);切换后立即保存并刷新应用详情;Web App 未运行或无编辑权限时开关置灰不可操作。

后端变更

  • app_extend 表新增 webapp_auth_enabled 列(NULL/True = 需登录,False = 允许匿名),扩展迁移 019(2026_07_21_0001-add_webapp_auth_enabled_to_app_extend
  • 新增 api/services/webapp_auth_service_extend.py:开关读写统一入口,带 redis 投影缓存(webapp_auth_enabled_extend:{app_id},写后失效)。
  • completion / chat / workflow run 三个 web 生成端点的登录门禁改为按开关放行:开关关闭时匿名请求可直接调用(不做计费归因),已登录用户仍照常归因扣费。
  • 修复:app_extend 行如今可能仅配置认证开关而未配置记忆上下文,base_app_runner.pyretention_numberNULL 的行按未配置处理。

前端变更

  • 应用概览页 Web App 卡片新增「访问认证」区块:标签 + 「?」帮助 Tooltip + Switch(@langgenius/dify-ui 原语实现,含 aria-label)。
  • 切换只提交 webapp_auth_enabled_extend 单字段到站点保存接口,成功后刷新应用详情并 toast 提示。
  • Web App 未运行(站点关闭 / workflow 未发布)或当前用户无编辑权限时,开关置灰。
  • WebApp 匿名侧:(shareLayout) 布局按开关决定是否强制跳转 /signin,关闭时匿名可直接进入。
  • 23 语种 web/i18n/*/extend.json 新增 appOverview.appInfo.webappAuth.title/tooltip 文案。

API 变更

  • POST /console/api/apps/{app_id}/site:新增可选字段 webapp_auth_enabled_extendboolean;不传则不修改)。
  • GET /console/api/apps/{app_id}:应用详情新增 webapp_auth_enabled_extend 字段回填。
  • GET /api/login/status?app_code=:匿名侧新增回传 webapp_auth_enabled_extend,供 WebApp 前端判断是否需要强制登录。

升级注意事项

  1. 数据库迁移:先 flask db upgrade(本版本无上游新迁移,幂等),再执行扩展迁移:

    flask extend_db upgrade
  2. 升级后所有应用默认保持需登录NULL 视为开启),行为与升级前一致,无需额外操作。

  3. 若使用 redis 多实例/清缓存工具,注意开关缓存键为 webapp_auth_enabled_extend:{app_id}(服务层写后自动失效,一般无需人工干预)。

  4. 通用流程与回归范围见 上游升级与回归检查清单

完整改动:1.16.0...1.16.1-beta.1