【发布时间】:2021-11-17 18:26:15
【问题描述】:
我目前在尝试将我的快速会话配置定义为 sameSite:'none' 时遇到打字错误。我目前正在使用 @types/express-session: 1.17.3 并且尝试使用旧版本也失败了。
文档表明我所做的是正确的,但类型定义有些错误。 https://expressjs.com/en/resources/middleware/session.html
在 express-sessions 的 index.d.ts 中,它表明我可以这样使用它,但是我遇到了编译器错误。
用于快速会话的 index.d.ts
class Cookie implements CookieOptions {
/** Returns the original `maxAge` (time-to-live), in milliseconds, of the session cookie. */
originalMaxAge: number;
maxAge?: number;
signed?: boolean;
expires?: Date;
httpOnly?: boolean;
path?: string;
domain?: string;
secure?: boolean | 'auto';
sameSite?: boolean | 'lax' | 'strict' | 'none';
}
我的会话配置:
const sessionConfig = {
secret: config.sessionSecret || '',
resave: false,
saveUninitialized: true,
cookie: {
secure: false, // if set to true tests won't work
maxAge: 10 * 60 * 1000 * 100000,
sameSite: 'none',
},
};
if (app.get('env') === 'production') {
app.set('trust proxy', 1); // trust first proxy
sessionConfig.cookie.secure = true; // serve secure cookies
}
app.use(cookieParser());
app.use(
cors({
origin: config.clientUrl,
methods: ['POST', 'PUT', 'GET', 'OPTIONS', 'HEAD'],
credentials: true,
}),
);
app.use(session(sessionConfig));
打字稿错误:
src/loaders/middleware.ts:35:19 - error TS2345: Argument of type '{ secret: string; resave: boolean; saveUninitialized: boolean; cookie: { secure: boolean; maxAge: number; sameSite: string; }; }' is not assignable to parameter of type 'SessionOptions'.
The types of 'cookie.sameSite' are incompatible between these types.
Type 'string' is not assignable to type 'boolean | "none" | "lax" | "strict" | undefined'.
【问题讨论】:
标签: typescript express session cookies samesite