nodejs是否有一个类似于ruby的表单助手来生成CSRF令牌?

时间:2012-07-28 04:25:10

标签: node.js csrf csrf-protection

在ruby中,可以执行<%= form_tag(:action => '/submit') do %> ... <% end %>之类的操作来获取包含CSRF令牌的表单。

节点中是否存在现有功能以及如何实现?

1 个答案:

答案 0 :(得分:1)

您可以将caolan-forms plugin用于node.js.之后安装express-csrf plugin

然后你可以合并这两个,比如:

// initializing express
var express = require('express'),

// initializing express-csrf   
csrf = require('express-csrf');

app = express.createServer();

app.dynamicHelpers({
    csrf: csrf.token
});

var forms = require('forms'),
    fields = forms.fields,
    validators = forms.validators;

var reg_form = forms.create({
    username: fields.string({required: true, id: csrf, name: csrf}),
});

// finally render the form
reg_form.toHTML();

它会产生:

<div class="field required">
   <label for="id_username">Username</label>
   <input type="text" name="[csrf-value]" id="[csrf-value]" value="test" />
</div>

注意: caolan-forms'作者写道:

  

您会注意到您必须提供自己的表单标签和提交按钮,这种方式更灵活;)

修改

由于express-csrf已被删除,请使用connect bundle并按照this简单示例操作。最终,您可以将其与 caolan-forms 集成,如:

var reg_form = forms.create({
     '_csrf':fields.hidden({value: 'req.session._csrf'}),
      ...
})