对不起,我不太了解koa的秘密钥匙工程。在兴亚,有 上app
对象keys
场,这将是这样使用:为什么koa上需要多个密钥?
const app = new Koa();
app.keys = ['some secret', 'another secret', 'or more ...']; // it's an
// array right?
,然后使用koa-csrf
中间件时,默认情况下内置csrf.middleware
不使用由app.keys
提供的密钥。如果我使用默认中间件 ,则需要创建另一个中间件,以便在会话上设置密钥 。
app.use(session()); // koa-generic-session
app.use(async (ctx, next) => { // without this custom middleware
ctx.session.secret = 'yet another secret'; // POST /protected-route
await next(); // will give 403
}); // missing secret
csrf(app);
app.use(csrf.middleware);
当我使用瓶,我需要提供只有一个密钥是由 不string
的array
设置。为什么需要多个密钥?整个应用程序仅使用一个还不够?
感谢您的回答。我明白你在那里解释什么。但是,(对不起,如果我不那么清楚),实际上我使用ajax后在服务器上的API休息,并暴露了元数据标记,这是采取与JavaScript的csrf标记。我测试过403消息不是关于令牌丢失,而是关于密钥没有正确设置,消息是不同的。你可以用'koa-generic-session'而不是'koa-session'来重现我的问题,这是不同的。我怀疑'koa-generic-session'和'koa-csrf'之间存在错误的通信。顺便说一句,谢谢,我现在明白了这个键盘阵列的用途。 –