v1.16.1-beta.1
Pre-release
Pre-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.py对retention_number为NULL的行按未配置处理。
前端变更
- 应用概览页 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_extend(boolean;不传则不修改)。GET /console/api/apps/{app_id}:应用详情新增webapp_auth_enabled_extend字段回填。GET /api/login/status?app_code=:匿名侧新增回传webapp_auth_enabled_extend,供 WebApp 前端判断是否需要强制登录。
升级注意事项
-
数据库迁移:先
flask db upgrade(本版本无上游新迁移,幂等),再执行扩展迁移:flask extend_db upgrade
-
升级后所有应用默认保持需登录(
NULL视为开启),行为与升级前一致,无需额外操作。 -
若使用 redis 多实例/清缓存工具,注意开关缓存键为
webapp_auth_enabled_extend:{app_id}(服务层写后自动失效,一般无需人工干预)。 -
通用流程与回归范围见 上游升级与回归检查清单。