Tag: 快递

req.logout()或req.session.destroy()不起作用

更新: 它的行为与我的实际FBlogin一致。 当我注销我的Facebook,然后单击我的网站上的“login”button,它将我redirect到Facebooklogin页面,并要求我login。 之后,我正确地回到我的网站上的“profile.html”网页。 但是,当我从我的网站点击“注销”时,它会进入我网站的主页。 这一次,当我再次点击“login”button,它直接进入我的网站“profile.html”。 看来最后的“注销”根本不起作用。 “注销”只能在我注销我的Facebook帐户时才起作用。 所以在我的网站上使用的会话依赖于Facebook的会话。 很奇怪! 我正在使用PassportJS来完成我的身份validation作业。 但是我发现req.logout()或者req.session.destroy()根本不起作用。 // route for showing the profile page app.get('/login', isLoggedIn, function(req, res) { res.render('profile', { user : req.user // get the user out of session and pass to template }); }); // route middleware to make sure a user is logged in function isLoggedIn(req, […]

使用Node.js + Express 2“代理”很多HTTP请求

我在Node.js + Express中编写代理2.代理应该: 根据结果​​解密POST有效载荷并向服务器发出HTTP请求; encryption来自服务器的回复并将其发送回客户端。 与encryption相关的部分工作正常。 我面临的问题是超时。 代理服务器应该在15秒内处理请求。 其中大部分实际上都在500毫秒以下。 当我增加并行请求的数量时出现问题。 大部分请求都可以正常完成,但有些在15秒+几毫秒之后失败。 ab -n5000 -c300可以正常工作,但并发度为500时,会出现一些超时的请求。 我只能推测,但似乎问题是callbackexectuion的顺序。 是否有可能首先发出的请求挂起,直到ETIMEDOUT为止,因为节点的焦点在最新的请求中,这些请求仍在500ms ETIMEDOUT处理。 PS:远程服务器没有问题。 我正在使用请求与它进行交互。 UPD 事情的方式与一些代码的方式: function queryRemote(req, res) { var options = {}; // built based on req object (URI, body, authorization, etc.) request(options, function(err, httpResponse, body) { return err ? send500(req, res) : res.end(encrypt(body)); }); } app.use(myBodyParser); // […]

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 […]