Files
novalon-manage-system/test-suite/tests/e2e/test_jwt_parsing.py
T
张翔 b0f91d74f5 feat: 统一JWT密钥配置并修复签名验证问题
修复前端签名生成中bodyString硬编码问题
添加start-frontend.sh脚本启动前端服务
统一manage-app和gateway的JWT密钥配置
修复Repository扫描路径问题
更新测试配置和依赖
重构表名映射为sys_user和sys_role
完善用户实体类字段映射
添加集成测试配置和测试用例
2026-04-02 12:28:49 +08:00

62 lines
1.4 KiB
Python

#!/usr/bin/env python3
"""
测试JWT Token解析
"""
import requests
import json
# 登录获取Token
login_data = {
"username": "admin",
"password": "admin123"
}
print("1. 登录...")
# 先通过前端proxy登录(会自动添加签名)
from playwright.sync_api import sync_playwright
import time
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto("http://localhost:3002/login")
page.wait_for_load_state("networkidle")
page.fill('input[placeholder="请输入用户名"]', 'admin')
page.fill('input[placeholder="请输入密码"]', 'admin123')
page.click('button:has-text("登录")')
# 等待Token
for i in range(10):
time.sleep(1)
token = page.evaluate("localStorage.getItem('token')")
if token:
break
browser.close()
print(f"\nToken: {token[:100]}...")
print(f"\nToken长度: {len(token)}")
# 解析Token的payload
import base64
def decode_jwt_payload(token):
parts = token.split('.')
if len(parts) != 3:
return None
payload = parts[1]
# 添加padding
padding = len(payload) % 4
if padding:
payload += '=' * (4 - padding)
decoded = base64.b64decode(payload)
return json.loads(decoded)
payload = decode_jwt_payload(token)
print(f"\nToken Payload:")
print(json.dumps(payload, indent=2))