From 855057e1d0b8ce79403d3033ed1029c240d3a9fc Mon Sep 17 00:00:00 2001 From: yumoqing Date: Tue, 8 Sep 2026 15:35:46 +0800 Subject: [PATCH] =?UTF-8?q?fix(login):=20=E7=99=BB=E5=BD=95=E9=A1=B5?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=86=85=E7=99=BB=E5=BD=95=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E5=81=9A=E7=9C=9F=E5=AE=9E=E6=B5=8F=E8=A7=88=E5=99=A8=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E2=80=94=E2=80=94dismissed=E6=97=A7bind=20urlwidget?= =?UTF-8?q?=20target=3Dwindow=E5=AE=9E=E4=B8=BAin-place=E6=B8=B2=E6=9F=93?= =?UTF-8?q?=E8=BF=9Bbricks.app(login.ui=E6=96=87=E6=A1=A3baseURI=3D/rbac/u?= =?UTF-8?q?ser/=E8=87=B4=E5=90=8E=E7=BB=AD=E6=A0=B9=E7=BB=9D=E5=AF=B9?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E5=85=A8=E9=94=99=E2=86=92=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E7=AA=97=E5=8F=8D=E5=A4=8D=E6=89=93=E5=BC=80,=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=8A=A5=E9=9A=9C);=E6=A1=8C=E9=9D=A2shell=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E4=BF=9D=E6=8C=81=E5=8E=9Fin-place=E8=AF=AD=E4=B9=89(?= =?UTF-8?q?2026-09-08)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wwwroot/user/up_login.dspy | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/wwwroot/user/up_login.dspy b/wwwroot/user/up_login.dspy index 77d515b..b052497 100644 --- a/wwwroot/user/up_login.dspy +++ b/wwwroot/user/up_login.dspy @@ -135,15 +135,19 @@ async with db.sqlorContext(dbname) as sor: # 非用户主动点击登录(如401自动弹窗):不刷新页面,标记不刷新 msg["options"]["refresh"] = False else: - # 用户主动点击登录:登录成功后刷新页面(跳转/index.ui) + # 用户主动点击登录:登录成功后刷新页面(跳转/index.ui)。 + # 注意(2026-09-08 修):旧实现用 actiontype=urlwidget target="window" —— + # bricks 里 'window' 解析为 bricks.app 根控件而非浏览器窗口,实际是 + # in-place 渲染 index.ui 进当前文档。桌面文档即 shell 页(baseURI 正确) + # 无感;但从 login.ui 文档进入时 baseURI 停留在 /rbac/user/,后续所有 + # 根绝对 urlwidget 解析错误 → 反复 401/500 → 登录窗反复打开。 + # 故:文档是登录页时做真实浏览器跳转;否则保持原 in-place 语义。 msg["binds"].insert(0, { "wid":"self", "event":"dismissed", - "actiontype":"urlwidget", - "target":"window", - "options":{ - "url":entire_url('/index.ui') - } + "actiontype":"script", + "target":"self", + "script":"if(window.location.pathname.indexOf('login.ui')>=0){window.location.replace('/');return;}var w=bricks.getWidgetById('window',this);if(w){bricks.widgetBuild({widgettype:'urlwidget',options:{url:'/index.ui'}},w).then(function(nw){if(nw){w.clear_widgets();w.add_widget(nw);}});}" }) return msg return {