跳到主要内容

登录 (/login/form)

网关 Web UI 入口界面。登录后可访问所有 /ui/* UI 路径。

2026.05+ 版本盒子的初始密码

install.sh 首次安装时,每个盒子都会自动生成随机密码(可能不是默认 admin123!)。 如果可以 SSH 访问盒子:

sudo cat /etc/kopens/credentials.txt # chmod 0600 root, 박스 안에서만

该文件中集中输出了 admin / mqtt / opcua / API key / keystore 密码。 建议在工厂预配置时打印/保存后封存盒子。


1. 界面构成

┌─────────────────────────────────────────────┐
│ ░░░ 다중 SVG 웨이브 (5겹) + 오로라 + 빛 점 │
│ │
│ 🌀 (회전 로고) │
│ 플랜트펄스 │
│ 엣지 │
│ [HOSTNAME 뱃지] │
│ │
│ 👤 [사용자 ID] │
│ 🔑 [패스워드] │
│ │
│ [🔓 로그인] │
│ │
│ KOPENS © │
│ │
│ ┌──────────────┐ │
│ │ IIoT 게이트 │ │
│ │ 웨이 일러스트 │ │
│ └──────────────┘ │
└─────────────────────────────────────────────┘

1.1 背景视觉效果

  • 深海军蓝渐变linear-gradient(135deg, #061830 0%, #0a2452 35%, #07182f 75%, #03101f 100%)
  • 5 层 SVG 波浪 (.login_wave .wv1 ~ .wv5) — 不同的振幅/相位,流动平顺
  • 极光 conic-gradient (.login_aurora) — 从屏幕中心缓慢旋转
  • 6 个光晕球体 (.orb) — 径向渐变,不同坐标处浮动
  • 右下角 IIoT 网关插图 (.edge_pc_deco .edge_gw_svg) — clamp(200px, 22vw, 320px) drop-shadow + 呼吸动画。用于可视化 PlantPulse Edge 的身份认同

所有效果均在 inline <style>pp-login.css 中定义 — 离开登录页面后消失(仅在登录页面适用)。

1.2 表单区域

区域内容
徽标 + 名称PlantPulse Edge 徽标(旋转)+ 中文名称
HOSTNAME 标签${edge_context.hostname} — 立即识别是哪个网关
用户 ID英文/数字/@ — 占位符 用户 ID
密码明文传输 — 建议使用 HTTPS
登录按钮submit

2. 操作流程

步骤结果
表单提交POST /login/login (user_id + password)
响应成功加载旋转圈 3 秒 (fa-spinner-third fa-spin) — 然后重定向到 /ui/main
响应失败告警框 (震动动画,红色强调) — "请检查登录 ID 和密码,然后准确输入。"

会话属性 _USER_LOGIN (JSONObject) 中保存用户信息 — UserFilter / ApiAuthFilter 通过该属性进行会话验证判定。

3 秒加载感觉太长?

给平台侧的令牌验证/重定向稳定留出时间。如果太快跳到 /ui/main,首次访问可能会被 401 认证重定向,重新进入登录屏幕,因此为了 UX 稳定性故意延迟。


3. 输入校验

字段约束
用户 ID4–20 个字符(英文/数字/@ 等)
密码4–20 个字符,明文传输(建议使用 HTTPS)

required="true" — 通过 HTML5 校验阻止空值。还应用了 minlength/maxlength。


4. 常见陷阱

症状原因/解决方案
登录后再次进入登录屏幕会话 Cookie 被阻止/混合域(HTTPS ↔ HTTP)。从同一 origin 访问
所有密码都被拒绝Cassandra pe.app_user_login 表为空。请求系统管理员注册初始用户
会话频繁断开Tomcat 会话超时时间太短 — 增加 app.properties 中的 security.session.timeout.minutes。或配置 PersistentManager + FileStore(已应用 — 重启后保持会话)
不同 PC 上同时登录允许(多会话)— 不支持 RBAC/单点登录强制
IIoT 插图不显示浏览器缩放太小或视口太窄(clamp 的最小值 200px 大于视口)。建议使用桌面

5. 安全说明

  • 建议使用 HTTPS — 外网暴露时强制使用 HTTPS(在 Tomcat 连接器或 nginx/Apache 反向代理前置)
  • REST /api/v1/* 需要认证ApiAuthFilter 满足以下任一认证方式即可通过:
    • X-API-Key 头(通过 EDGE_REST_API_KEY_FILEEDGE_REST_API_KEY 注入的值)
    • Authorization: Bearer <key>
    • 登录会话(浏览器已登录状态)— 若 _USER_LOGIN 属性存在则通过会话验证
  • ?api_key=<key> 查询参数可能在 URL 记录/代理缓存中留下键,因此被 401 拒绝
  • 密钥在 app.propertiesedge.rest.api.key 中设置,仅在 edge.rest.api.auth=true 时强制。详见 REST API 指南
  • API 调用审计日志 — 所有 /api/* 调用均由 ApiAccessLogFilter 记录一行日志(方法/路径/状态/耗时/IP/用户/认证模式/UA),IP 基于 RemoteAddr 默认值,apikey 明文仅显示前 4 字符 + 长度进行掩码
  • 修改密码 — 右上角齿轮 → 环境设置 → edge.admin_password → 保存 → 重启(详见

6. 进一步了解