基于 shiy-temp分支修改
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
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}`,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user