登录 (/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. 输入校验
| 字段 | 约束 |
|---|---|
| 用户 ID | 4–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_FILE或EDGE_REST_API_KEY注入的值)Authorization: Bearer <key>头- 或登录会话(浏览器已登录状态)— 若
_USER_LOGIN属性存在则通过会话验证
?api_key=<key>查询参数可能在 URL 记录/代理缓存中留下键,因此被 401 拒绝- 密钥在
app.properties的edge.rest.api.key中设置,仅在edge.rest.api.auth=true时强制。详见 REST API 指南 - API 调用审计日志 — 所有
/api/*调用均由ApiAccessLogFilter记录一行日志(方法/路径/状态/耗时/IP/用户/认证模式/UA),IP 基于RemoteAddr默认值,apikey 明文仅显示前 4 字符 + 长度进行掩码 - 修改密码 — 右上角齿轮 → 环境设置 →
edge.admin_password→ 保存 → 重启(详见)
6. 进一步了解
- 登录后首屏:主仪表板
- 修改密码·API 密钥:密码 · API 密钥修改
- REST API 认证详解:REST API 指南