首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Express.js csrf“错误配置csrf”错误

Express.js csrf“错误配置csrf”错误
EN

Stack Overflow用户
提问于 2016-01-02 01:16:40
回答 2查看 3.1K关注 0票数 0

我创建了一个新的Express应用程序(4.13.1),并且没有添加任何内容。我会试着让它与Angular一起工作,但我一开始就卡住了。

我现在使用express-jwt (cookies)处理身份验证,所以我不处理会话(在Redis、Mongo等中存储会话)或其他东西。

下面是我添加到app.js中的内容。

代码语言:javascript
复制
var csrf = require('csurf');

app.use(cookieParser('randomStringisHere222'));
app.use(csrf());
app.use(function(req, res, next) {
  res.cookie('XSRF-TOKEN', req.csrfToken());
  return next();
});

当我访问localhost:3000时,我得到了上面的错误。

代码语言:javascript
复制
misconfigured csrf

Error: misconfigured csrf
    at getsecret (/Users/itsme/Desktop/k/node_modules/csurf/index.js:195:11)
    at csrf (/Users/itsme/Desktop/k/node_modules/csurf/index.js:60:18)
    at Layer.handle [as handle_request] (/Users/itsme/Desktop/k/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/Users/itsme/Desktop/k/node_modules/express/lib/router/index.js:312:13)
    at /Users/itsme/Desktop/k/node_modules/express/lib/router/index.js:280:7
    at Function.process_params (/Users/itsme/Desktop/k/node_modules/express/lib/router/index.js:330:12)
    at next (/Users/itsme/Desktop/k/node_modules/express/lib/router/index.js:271:10)
    at cookieParser (/Users/itsme/Desktop/k/node_modules/cookie-parser/index.js:48:5)
    at Layer.handle [as handle_request] (/Users/itsme/Desktop/k/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/Users/itsme/Desktop/k/node_modules/express/lib/router/index.js:312:13)
EN

回答 2

Stack Overflow用户

发布于 2016-07-01 04:52:08

你不应该使用return next();

就试试next();

票数 0
EN

Stack Overflow用户

发布于 2017-03-17 03:01:43

下面的代码对我来说很有效。如果您仍然面临问题,请让我知道。

正如前面提到的,您没有使用Sessions,您已经让csurf知道您正在使用cookie来设置CSRF令牌。

Step1:配置

代码语言:javascript
复制
var csrf = require('csurf');
var cookieparser= require('cookie-parser'); 

//cookieparser must be placed before csrf 
app.use(bodyparser.urlencoded({extended:false}));
app.use(cookieParser('randomStringisHere222'));
app.use(csrf({cookie:{key:XSRF-TOKEN,path:'/'}}));

//add the your app routes here
app.use("/api", person);
app.use("/", home);

Step2:在路由中,

代码语言:javascript
复制
res.render('myViewPage',{csrfTokenFromServer:req.csrfToken()}); 

Step3:在csrf令牌的超文本标记语言中包含一个隐藏字段示例:

代码语言:javascript
复制
<form action="/api/person" method="POST">
      <input type="hidden" name="_csrf" value=<%=csrfTokenFromServer %> />
      First name:<br>
      <input type="text" name="firstname" value="">
      <br>
      Last name:<br>
      <input type="text" name="lastname" value="">
      <br><br>
      <input type="submit" value="Submit">
 </form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34558224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档