import { createCookieSessionStorage } from '@remix-run/node'; import { v4 as uuidv4 } from 'uuid'; import { difyUtils } from '../services/dify-client.server'; // 创建会话存储 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); } // 获取或创建会话信息 export async function getSessionInfo(request: Request) { const session = await getSession(request); let sessionId = session.get('sessionId'); if (!sessionId) { sessionId = uuidv4(); session.set('sessionId', sessionId); } const user = difyUtils.generateUserId(sessionId); return { sessionId, user, session, }; } // 设置会话头部 export function setSessionHeaders(sessionId: string) { return { 'Set-Cookie': `session_id=${sessionId}; Path=/; HttpOnly; SameSite=Lax; Max-Age=${60 * 60 * 24 * 30}`, }; }