Files
selfrelease a3245b249a security: 安全审计修复 - API Key清理 + JWT改为HttpOnly Cookie
- API Key: run.md/.env/seed_model_providers.sql 中明文Key替换为占位符
- 认证: JWT从localStorage迁移到HttpOnly Cookie,移除后端body返回token
- 前端: api.ts/knowledge/page.tsx/auth.ts 全面改用Cookie认证
- postcss XSS: package.json添加overrides强制升级到8.5.15
- gitignore: 添加server/.env和.env排除规则
- lint: 移除tenant.go中未使用的roleKey常量
- 文档: 新增docs/security-audit-report.md和hardware-requirements.md
2026-06-26 10:44:04 +08:00

24 lines
865 B
TypeScript

import { test as setup, expect } from "@playwright/test";
import fs from "fs";
import path from "path";
const AUTH_FILE = path.join(__dirname, ".auth", "state.json");
setup("登录法制日报账号并保存会话", async ({ page }) => {
fs.mkdirSync(path.dirname(AUTH_FILE), { recursive: true });
await page.goto("/login");
await expect(page.locator("#org")).toBeVisible({ timeout: 30_000 });
await page.locator("#org").selectOption("a0000000-0000-0000-0000-00000000000a");
await page.fill("#email", "fazhiribao@govai.gov.cn");
await page.fill("#password", "admin123");
await page.getByRole("button", { name: /登\s*录/ }).click();
await page.waitForURL(/\/store/, { timeout: 30_000 });
// HttpOnly Cookie: 登录后 token 存在 cookie 中,通过 storageState 自动捕获
await page.context().storageState({ path: AUTH_FILE });
});