Files
leaudit-platform-frontend/app/utils/session.server.ts
T
TanWenyan e41c457076 修复session中的user生成逻辑
问题:
- session.server.ts 还在调用已删除的 generateUserId 函数
- 生成的 user 格式为 user_{APP_ID}:{sessionId},与后端期望的 username 不符
- 导致后端无法正确识别用户

修复:
- 移除 difyUtils 导入
- 移除 getSessionInfo 中的 user 字段生成
- 现在完全由后端从 JWT 中提取 username 管理 user 字段

影响:
- getSessionInfo 返回值不再包含 user 字段
- 所有 API 路由已经不再使用 session 中的 user

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 10:48:18 +08:00

50 lines
1.4 KiB
TypeScript

import { createCookieSessionStorage } from '@remix-run/node';
import { v4 as uuidv4 } from 'uuid';
// 创建会话存储
const sessionStorage = createCookieSessionStorage({
cookie: {
name: '__dify_session',
httpOnly: true,
path: '/',
sameSite: 'lax',
secrets: ['dify-chat-secret'], // 在生产环境中应该使用环境变量
secure: process.env.NODE_ENV === 'production',
maxAge: 60 * 60 * 24 * 30, // 30天
},
});
// 获取会话
export async function getSession(request: Request) {
const cookie = request.headers.get('Cookie');
return sessionStorage.getSession(cookie);
}
// 提交会话
export async function commitSession(session: any) {
return sessionStorage.commitSession(session);
}
// 获取或创建会话信息
// 注意:user 字段已移除,现在由后端从 JWT 自动提取 username
export async function getSessionInfo(request: Request) {
const session = await getSession(request);
let sessionId = session.get('sessionId');
if (!sessionId) {
sessionId = uuidv4();
session.set('sessionId', sessionId);
}
return {
sessionId,
session,
};
}
// 设置会话头部
export function setSessionHeaders(sessionId: string) {
return {
'Set-Cookie': `session_id=${sessionId}; Path=/; HttpOnly; SameSite=Lax; Max-Age=${60 * 60 * 24 * 30}`,
};
}