NodeJS 如何正确设置 csrf 令牌?
NodeJS how to set csrf token correctly?
这是这个问题的延续:
The code I used for server.js is:
const cookieParser = require('cookie-parser');
const csrf = require('csurf');
app.use(cookieParser());
app.use(csrf({ cookie: true }));
app.use(function (req, res, next) {
res.cookie('csrfmiddlewaretoken', req.csrfToken());
next();
});
然而,结果是
我认为是我没有正确设置cookie的原因。我试图删除 app.use(csrf({ cookie: true }));,但随后显示 csrf misconfigured. 错误
在fiddler中,我可以看到cookie中有两个token,一个是默认的,一个是res.cookie('csrfmiddlewaretoken', req.csrfToken())设置的;,如何以正确的方式设置cookie?
更新:
我想出了一种将 _csrf 的名称更改为 csrfmiddlewaretoken 的蛮力方法。
app.use(function (req, res, next) {
res.cookie('csrfmiddlewaretoken', req.cookies._csrf);
next();
})
然后,在 fiddler 中,我看到值相同。
但 django rest-auth 仍然报告失败,如:
也许这与名称无关。我还在研究....
JiPanNYC,可能你忘了加
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}
在你的settings.py
这是这个问题的延续:
The code I used for server.js is:
const cookieParser = require('cookie-parser');
const csrf = require('csurf');
app.use(cookieParser());
app.use(csrf({ cookie: true }));
app.use(function (req, res, next) {
res.cookie('csrfmiddlewaretoken', req.csrfToken());
next();
});
然而,结果是
我认为是我没有正确设置cookie的原因。我试图删除 app.use(csrf({ cookie: true }));,但随后显示 csrf misconfigured. 错误
在fiddler中,我可以看到cookie中有两个token,一个是默认的,一个是res.cookie('csrfmiddlewaretoken', req.csrfToken())设置的;,如何以正确的方式设置cookie?
更新:
我想出了一种将 _csrf 的名称更改为 csrfmiddlewaretoken 的蛮力方法。
app.use(function (req, res, next) {
res.cookie('csrfmiddlewaretoken', req.cookies._csrf);
next();
})
然后,在 fiddler 中,我看到值相同。
但 django rest-auth 仍然报告失败,如:
也许这与名称无关。我还在研究....
JiPanNYC,可能你忘了加
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}
在你的settings.py