我目前正在使用iron-session和next.js进行一个项目。我不会在点击Link标签时丢失我的用户。但如果我刷新用户,用户将变为未定义。Cookie已设置,刷新时不会删除。我不知道出了什么问题。
下面是我的登录.ts代码:
export default withIronSessionApiRoute(loginRoute, sessionOptions);
async function loginRoute(req: NextApiRequest, res: NextApiResponse) {
try {
const {
data: {tcId, admin, userName},
} = await axios('http://localhost:8080/user/login', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
data: JSON.stringify(req.body),
});
const user = {tcId: tcId, userName: userName, admin: admin} as User;
req.session.user = user;
await req.session.save();
res.json(user);
} catch (error) {
res.status(500).json({message: (error as Error).message})
}}
下面是我的会话.ts代码:
// this file is a wrapper with defaults to be used in both API routes and `getServerSideProps` functions
import type { IronSessionOptions } from 'iron-session'
import type { User } from '../pages/api/user'
export const sessionOptions: IronSessionOptions = {
password: process.env.SECRET_COOKIE_PASSWORD as string,
cookieName: 'eys-cookie',
// secure: true should be used in production (HTTPS) but can't be used in development (HTTP)
cookieOptions: {
secure: process.env.NODE_ENV === 'production',
},
};
// This is where we specify the typings of req.session.*
declare module 'iron-session' {
interface IronSessionData {
user?: User
}
}
正如我之前所说,我不会失去我的用户。而路由使用链接标签从下一个。刷新导致失去我的用户。也没有其他标签到达我的用户。
我可以显示更多的代码,如果需要的话。但我认为问题就在这里。
2条答案
按热度按时间bvhaajcl1#
我有一个类似的问题,并解决了标签切换设置:
对于useSWR函数
样品
你也可以在这里探索其他选项https://swr.vercel.app/docs/options
gorkyyrv2#
不知道是否仍存在此问题,但可能是您忘记在de index或_app组件上添加SWRconfig
导出默认MyApp