Cookie值返回为未定义



我使用cookie存储会话来保存从身份验证接收到的用户令牌。当我试图在登录后设置它并从根调用它。在tsx的Loader函数中,userId返回undefined

我的加载器函数是:

export let loader: LoaderFunction = async({request, params}) => { 
let userId = await getUserId(request);
console.log(userId);
return (userId ? userId : null);
}

我收到userId getUserId的函数定义为:

export async function getUserId(request: Request){
let session = await getUserSession(request);
let userId = session.get("userId");
if (!userId || typeof userId !== "string") return null;
return userId;
}

getUserSession函数如下:

export async function getUserSession(request: Request){
return getSession(request.headers.get('Cookie'));
}

我从析构createCookieSessionStorage中收到getSession。

我正在用createUserSession函数创建一个cookie,它就像:

export async function createUserSession(userId: string, redirectTo: string){
let session = await getSession();
session.set("userId", userId);
return redirect(redirectTo, {
headers: {
"Set-Cookie": await commitSession(session),
},
});
}

我也收到了销毁createCookieSessionStorage的commitSession。我使用了与笑话演示程序相同的代码。

let { getSession, commitSession, destroySession } = createCookieSessionStorage({
cookie: {
name: "RJ_session",
secure: true,
secrets: [sessionSecret],
sameSite: "lax",
path: "/",
maxAge: 60 * 60 * 24 * 30,
httpOnly: true,
},
});

您将cookie配置为具有secure: true,这使得cookie仅适用于HTTPS,而一些浏览器允许本地主机中的安全cookie,但大多数浏览器不这样做,因此可能导致您的cookie不被浏览器保存,使后续请求根本不接收cookie。

最新更新