我有点像后端安全n00b,所以如果我遗漏了一些明显的东西,请保持温和:
当我在节点中通过HTTP获取值时,表单数据位于请求对象req.body.{name of input element}
通过HTTPS,req.body
似乎不存在。我已经尝试退出req
对象,但我无法在那里看到它。我做错了什么?
function checkUser(req, res) {
console.dir(req);
//if passwords don't match
if (req.body.password !== req.body.confirm_password) {
return false;
}
return true;
}
app.post('/register', function(req, res) {
if (checkUser(req, res)) {
createUser(req, res)
res.redirect('/browse?p=0');
}
res.render('register', {
error: 'Passwords did not match'
})
});
一旦进入checkUser方法,它就会崩溃,说没有定义req.body。那么数据保存在哪里?
任何帮助将不胜感激......
由于
詹姆斯
答案 0 :(得分:0)
req.body
仅在链接到适当的中间件以解析请求正文时才存在。我推荐以下内容:
app.use(express.urlencoded());
app.use(express.json());
您经常会看到express.bodyParser()
正在使用,但我建议避免使用它,因为它还包含已被弃用的express.multipart()
,并且当Express更新其对Connect的依赖时将消失。如果您需要解析多部分表单数据,请查看Busboy或Formidable。
我认为您的问题与HTTPS无关:解析请求正文与HTTP和HTTPS中的进程相同。
答案 1 :(得分:0)
好的,我明白了......
我按正确的顺序调用了一些东西,但是我将所有的护照内容(以及相应的中间件)都包含在模块文件中。由于可能是范围或竞争条件,它在路由和控制器执行之前没有注册中间件。
web.js中的:
app = express();
app.settings.env = 'development';
app.engine('dust', dustjs.dust({
cache: false
}));
app.set('view engine', 'dust');
app.set('views', __dirname + '\\views');
//Middleware
app.use(express.methodOverride());
app.use(express.favicon(__dirname + '/public/images/favicon.ico', {
maxAge: 2592000000
}));
app.use(app.router);
//Environment Variables
//app.configure('development', function() {
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
dustjs.isDebug = true;
auth = require('./modules/auth/auth').auth(app);
auth.js中的
module.exports.auth = function(app) {
//verification using passport.js
passport = require("passport");
express = require('express');
LocalStrategy = require('passport-local').Strategy;
FacebookStrategy = require('passport-facebook').Strategy;
TwitterStrategy = require('passport-twitter').Strategy;
app.use(express.cookieParser());
app.use(express.urlencoded());
app.use(express.json());
app.use(express.session({
secret: 'SECRET'
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(
etc...