我尝试使用Django rest-auth软件包实现身份验证(登录/注册)功能。
url(r'^rest-auth/', include('rest_auth.urls')),
url(r'^rest-auth/registration/', include('rest_auth.registration.urls')),
但是,在Nodejs中我已经使用'csurf'包设置了csrf令牌,
const cookieParser = require('cookie-parser');
const csrf = require('csurf');
const app = new Express();
app.use(cookieParser());
app.use(csrf({ cookie: true }));
你能帮我弄清楚bug的位置吗?
答案 0 :(得分:1)
您的请求中的令牌目前名为_csrf
。需要将它调用csrfmiddlewaretoken
以便Django选择它。
答案 1 :(得分:0)
感谢Raphael Gomes。我在这方面取得了一些进展。 我将server.js文件更改为:
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();
});
我可以看到2个csrfs,一个默认,一个由我设置。我试图删除app.use(csrf({cookie:true}));但后来显示csrf错误配置。无论如何,至少csrfmiddlewaretoken以这种方式工作。
它说这个csrf令牌无效。我想那是因为我使用了req.csrfToken()。我还在研究如何设置正确的csrf令牌。