typescript 为什么将cookie逻辑移动到函数中会导致意外行为

snz8szmq  于 2023-08-07  发布在  TypeScript
关注(0)|答案(1)|浏览(122)

所以在我的快速登录路线中,我使用jwt进行认证,我想将逻辑移动到一个单独的域中,所以我将其放入一个函数中并修改了我的代码。但我注意到的是,当我的客户端代码试图读取cookie时,它不存在,所以它出错,但在它试图读取值之后,cookie出现了。我假设这是一个竞争条件,在这种情况下,客户端在设置cookie之前阅读cookie,但路由和函数之间的执行时间微不足道。我真的不明白发生了什么,我不想因为一个简单的函数调用而在客户端实现一个暂停来等待cookie。
之前(工作代码):

const token = jwt.sign(
                { id: userInfo.id, username: userInfo.username },
                process.env.SECRET!,
            );
            let cookieOptions: CookieOptions = {
                httpOnly: false,
                secure: process.env.NODE_ENV === "production",
            };
            if (remember) {
                cookieOptions = {
                    ...cookieOptions,
                    maxAge: 7 * 24 * 3600000,
                    expires: new Date(Date.now() + 7 * 24 * 3600000),
                };
            }
            res.cookie("access_token", token, cookieOptions).json({
                match: match,
                userinfo: {
                    id: userInfo.id,
                    username: userInfo.username,
                    email: userInfo.email,
                    firstName: userInfo.first_name,
                    lastName: userInfo.last_name,
                },
            });

字符串
问题儿童(The Problem Child):

const { token, cookieOptions } = generateAuthToken(
            {
                id: userInfo.id,
                username: userInfo.username,
            },
            remember,
        );
        res.cookie("access_token", token, cookieOptions).json({
            match: match,
            userInfo: {
                id: userInfo.id,
                username: userInfo.username,
                email: userInfo.email,
                firstName: userInfo.first_name,
                lastName: userInfo.last_name,
            },
        }),


我看到功能没有改变,在刷新客户端时,代码可以读取cookie,应用程序按预期工作。我试着为每一个的执行计时,发现没有任何有意义的变化。

m1m5dgzv

m1m5dgzv1#

从反馈和更多的研究中,我意识到这更多的是我的应用程序的架构问题,而不是代码实现的问题。所以我会研究其他的解决方案。

相关问题