Sails.js CSRF 令牌始终针对 POST 请求而更改

问题描述 投票:0回答:1

我已为 sails.js 应用程序启用了 csrf 保护,并正在调用路由来获取我的 POST 请求的令牌。但是,我不断收到发布请求的不匹配错误。

这是我在 POST 请求之前获取令牌的代码

        jQuery.get("/csrfToken")
        .done(function (oData) {           
          console.log("CSRF Token: " + oData._csrf);
          $.ajax({
            url: sUrl,
            data: formData,
            headers: {
              'X-CSRF-Token': oData._csrf
            },
            processData: false,
            contentType: false,
            type: 'POST',
            success: function (data) {
              resolve(data);                
              console.log("upload success");
            },
            error: function (oError) {
              console.log("upload Error" + oError);
              reject(oError);
            }
          });

        })
        .fail(function (oError) {
          reject({
            message: "An error occurred requesting csrf:" + oError
          });

当我调试路由时,我调用 post 请求并将 req.csrfToken() 与 req.headers["x-csrf-token"] 进行比较,它们都是不同的。对我哪里出错有什么建议吗?谢谢

javascript sails.js csrf csrf-token
1个回答
0
投票

我建议检查一下我是如何处理 CSRF 令牌的。

我已经在

.sailsrc
中禁用了内置的CSRF处理程序:https://github.com/neonexus/sails-react-bootstrap-webpack/blob/release/.sailsrc

这个自定义的

OK
响应是大多数自动化魔法开始的地方:https://github.com/neonexus/sails-react-bootstrap-webpack/blob/release/api/responses/ok.js

isLoggedIn 策略在需要时验证 CSRF 令牌:https://github.com/neonexus/sails-react-bootstrap-webpack/blob/release/api/policies/isLoggedIn.js

此帮助程序生成一个新的令牌/秘密:https://github.com/neonexus/sails-react-bootstrap-webpack/blob/release/api/helpers/generate-csrf-token-and-secret.js

此帮助程序使用新的 CSRF 令牌更新

req
对象(并更新会话过期时间):https://github.com/neonexus/sails-react-bootstrap-webpack/blob/release/api/helpers/update- csrf-and-expiry.js

© www.soinside.com 2019 - 2024. All rights reserved.