这是此问题的延续:Rest-auth still reports the error of "CSRF cookie not set", but I've set the csrf
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错误配置。
在小提琴手中,我可以看到cookie中有两个令牌,一个默认,一个由 res.cookie('csrfmiddlewaretoken',req.csrfToken())设置; ,如何设置cookie以正确的方式?
更新
我想出了一种蛮力的方法来将_csrf的名称改为csrfmiddlewaretoken。
app.use(function (req, res, next) {
res.cookie('csrfmiddlewaretoken', req.cookies._csrf);
next();
})
然后,在小提琴手中,我看到的值是相同的。
也许这与名字无关。我还在研究......
答案 0 :(得分:2)
JiPanNYC,也许你忘了添加
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
'rest_framework.authentication.TokenAuthentication',
)
}
你在settings.py中的