Articles of 快递

req.session.passport和req.user空,serializeUser和deserializeUser都不会被调用

我正在使用Express(v4.11.2)与护照,以支持多个提供商(本地,脸谱,微博和谷歌)访问我正在build设的networking应用程序。 作为后端,我使用的是mysql。 现在我有两个本地策略:本地注册和本地login。 我遇到的问题是,req.session.passport和req.user总是空的,实际上,serializeUser和deserializeUser永远不会被调用。 这里是快递和护照的设置: var bodyParser = require('body-parser'); var session = require('express-session'); var MemoryStore = session.MemoryStore; var _ = require('underscore'); var passport = require('passport'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); app.use(session({ key: 'KEY', secret: 'SECRET331156%^!fafsdaasd', store: new MemoryStore({reapInterval: 60000 * 10}), saveUninitialized: true, resave: false })); app.use(passport.initialize()); app.use(passport.session()); require('./config/passport')(passport); // pass passport for configuration 这里是身份validation策略的护照文件: module.exports = […]

expressjsfile upload,检查是否确实有文件发送,指定max filesize并保留其名称

到目前为止,大约一个月的时间和expressjs一起工作,我偶然发现了file upload的问题。 尽pipe咨询谷歌和各种博客,我没有find以下三个问题的答案: 我必须做什么/ bodyParser的设置,我必须select,以便: 确保确实上传了一个文件(目前,在没有select文件的情况下提交表单时会创build一个空文件)。 我可以在哪里指定文件允许的最大大小值? 我怎样才能省略文件的重命名? 目前我在我的express(v。3.0.0)应用程序中包含bodyParser,并带有以下选项: {keepExtensions: true, uploadDir: __dirname + '/public/uploads'}

PassportJS – 自定义callback并将Session设置为false

是否有可能使用自定义callback和禁用会话? 在文档中,它显示了如何禁用会话和自定义callback,但我如何将它们合并? app.get('/login', function(req, res, next) { passport.authenticate('local', function(err, user, info) { if (err) { return next(err); } if (!user) { return res.redirect('/login'); } req.logIn(user, function(err) { // I'm getting an error here // [Error: Failed to serialize user into session] if (err) { return next(err); } return res.redirect('/users/' + user.username); }); })(req, res, next); […]

我如何强制刷新req.user?

我正在使用本地身份validation策略passport.js为我的node.js / express应用程序。 LocalStrategy返回的用户包括电子邮件和用户名等内容。 我想让用户能够更新他们的电子邮件或用户名内的应用程序。 发生这种情况时,我想告诉护照重新加载用户(就像他们刚刚login一样),以便req.user在会话的其余部分反映已更新的更改。 简单地设置它似乎不会超过这一个请求。 简单的例子: app.get('/changeEmail', function(req, res, next) { var userId = req.user.id; var origEmail = req.user.email; var newEmail = req.param('email'); userDao.updateEmail(userId, newEmail, function(err) { if (!err) { // user's email has changed, need change reflected in req.user from this point on req.user.email = newEmail; } next(); }); });

Expressjs / connect – 模拟缓慢的file upload

有没有一种方式来设置连接或expression模式或价值模拟慢速file upload?

如何在Formidable(Node.js)中取消用户上传?

我已经在这个问题上工作了两天了,而且我被卡住了。 我正在使用Express的Node.js,我试图实现一个上传表单。 基本上,我想要的forms做到以下几点: 检查文件的大小,并取消上传,如果它太大(当我说取消,我的意思是防止任何进一步的数据被写入磁盘并删除临时文件) 检查文件types并确认它是正确的types(.jpg,.png等),如果不是,则停止进一步写入磁盘并删除临时文件。 目前,我有上传工作,并且当文件太大或者它不匹配正确的types时,我发出错误,然后在整个文件写入磁盘后,我用fs.unlink()删除文件。 但是,我发现这种方法存在一个潜在的问题:如果用户上传一个巨大的文件(GB的大小)呢? 现在用我的方法,它最终会从我的机器中删除,但不会浪费大量的资源。 所以基本上,我正在寻找使用最less量的资源,以确认文件可以上传。 这是迄今为止的代码: var path = absolutePath + '/public/images/users/' + req.session.userId + '/'; var maxSize = 3146000; // 3MB var form = new formidable.IncomingForm(); form.uploadDir = path; form.keepExtensions = true; form.on('error', function(message) { if(message) { res.json({err: message}); } else { res.json({err: 'Upload error, please try again'}); } }); […]

护照,脸书不收取电子邮件

我已经在我的网站上使用快递公司和护照Facebook实施了Facebook-LogIn。 它运作良好(我得到现场configuration文件),但问题是,我没有得到电子邮件。 我收到一个错误: email : profile.emails[0].value, TypeError:无法读取未定义的属性“0” 我的代码: passport.use('facebook',new FacebookStrategy({ clientID : config.facebook.id, clientSecret : config.facebook.secret, callbackURL : '/auth/facebook/callback', profileFields : ['id', 'displayName', 'emails','photos'] }, function(accessToken, refreshToken, profile, done) { User.findOne({provider_id: profile.id}, function(err, user) { if(err) throw(err); if(!err && user!= null) return done(null, user); var user = new User({ provider_id : profile.id, name : profile.displayName, […]

req.session.passport为空,反序列化用户未调用 – ExpressJS,护照

我在使用Passport / ExpressJS中的会话时遇到问题。 当我loginreq.session ,我可以看到护照是{} : { cookie: { path: '/', _expires: Mon Sep 29 2014 19:37:16 GMT-0300 (BRT), originalMaxAge: 3594522, httpOnly: true, secure: true }, passport: {} } 另外,我正在使用Facebook进行身份validation,并且没有调用passport.deserializeUser 。 这是我的代码: passport.use(new FacebookStrategy({ // pull in our app id and secret from our auth.js file clientID : configAuth.facebookAuth.clientID, clientSecret : configAuth.facebookAuth.clientSecret, callbackURL : configAuth.facebookAuth.callbackURL […]

PassportJS会话混合起来

在ExpressJS应用程序中,当推送到生产服务器时,护照会话随机混合。 随机,即使我没有注销我的会话,该页面也可以加载另一个用户的视图。 如果不做其他事情,另一个更新会使我回到我自己的账户(也是随机的)。 我们的两个Web应用程序发生这种现象,这两个应用程序是由两个单独的用户按照其网站上的Passport指南编码的。 这两个networking应用程序都使用Facebook连接/ API。 这发生在Redis和File会话存储上。 我看到一篇关于使用全局variables的文章 :我们确定只使用本地作用域。 有什么我们做错了? 更新v1 在一个应用程序中,我们为Passport的serialize / deserialize实现了以下内容: passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(obj, done) { done(null, obj); }); 另一方面,我们也试过: passport.serializeUser(function (user, done) { done(null, user); }); passport.deserializeUser(function(user, done) { User .where({id: user.id}) .fetch() .then(function (user) { done(null, user); }, function (err) { done(err, user); }); }); 无论哪种方式,该应用程序仍然有其会议混合起来。 […]

Heroku雪松堆栈上的Node.js端口问题

我正在Node.js中运行一个基本的Express应用程序,并试图部署到Heroku。 该应用程序在本地正常工作,我相信我的设置与Heroku已经很好,直到启动服务器,我得到以下错误: 2011-09-21T16:42:36+00:00 heroku[web.1]: State changed from created to starting 2011-09-21T16:42:39+00:00 app[web.1]: Express server listening on port 3000 in production mode 2011-09-21T16:42:40+00:00 heroku[web.1]: Error R11 (Bad bind) -> Process bound to port 3000, should be 12810 (see environment variable PORT) 2011-09-21T16:42:40+00:00 heroku[web.1]: Stopping process with SIGKILL 2011-09-21T16:42:40+00:00 heroku[web.1]: Process exited 这是目前我所有在我的app.js app.listen(3000); 我也按照Heroku入门中所提到的来运行它。 $ heroku […]