e29fce4012ab06dcd92d02c2919c2f9e76e06d49
tools/login_console.py —— 浏览器打开 http://127.0.0.1:8099 即可测。 与 chat_console.py 的关键差别:**它走真实登录接口**(POST /api/v1/auth/tokens)拿令牌, 而不是自己签。chat_console 是当初还没有登录接口时的权宜做法,这个测的是真链路。 页面能做的: - 三个快捷填充按钮(客户 cust_t/123456、员工 risk_t/666666、管理员 admin_t/88888888); - 登录后显示用户、角色标签、data_scope、令牌有效期(令牌只显示前 24 字符); - 按角色列出可调的**只读**接口按钮(我的画像 / 风控概览 / 预警列表 / 角色清单 / 管理视角看某人的身份),一眼核对"登录给的 roles"与"接口实际放行"是否一致; - 把真实状态码与响应 JSON 原样摊在页面上,并写明 401 涵盖三种原因、429 是登录限流。 实现上不动 app/ 一个字节:内层用 create_app(),本进程只做两件事 —— 提供静态页、 把 /api/* 同源转发(httpx.ASGITransport 进程内调用,不起第二个服务)。同源转发避开 CORS, 也免得浏览器直连主服务;只监听 127.0.0.1,私钥始终留在服务端。 实测:页面 200;通过代理用 admin_t 登录拿到真实 JWT(sub=9003);错密码 401。 顺带说明一条边界变化:docs/24 当初拒绝"给底座加 dev token 端点",理由是那种端点等于把 **任意身份**开放给任何能访问服务的人。现在有了密码校验,浏览器拿令牌不再等于 "谁都能冒充任何人",那条顾虑已消除 —— 所以这个页面不是绕过安全设计,而是设计补齐后的正常用法。
Description
番茄炒蛋组
18 MiB
Languages
Python
99.9%