Tag: 快递

在Express和Passport之间检测Cookie

访问http://localhost/login会立即redirect到Facebook,以确认应用程序使用情况。 一旦授权,Facebook联系人http://localhost/login?code=使用特殊的代码,允许服务器获取用户的信息,如姓名和性别。 Express().get('/login', Passport().authenticate('facebook', { failureRedirect: 'http://localhost/', }), function(req, res) { database.saveData(req.user, **randomlyGeneratedHash**); res.cookie('session', **randomlyGeneratedHash**); res.end(); }); 这可以按预期的方式工作,但是当通过身份validation的用户连续访问/login时,整个过程会重复,并且会得到一个新的cookie。 有没有一种方法可以在Express和Passport之间运行一些代码,如果用户已经有了一个有效的Cookie,可以停止Passportredirect到Facebook?

更新Passport + MongoDB中的用户logging

我试图通过POST请求更新护照中的用户logging。 我已经看了各种教程和以前对类似问题的回答 。 我已经实现了以下代码: var User = require("../models/user"); router.get("/settings/profile/:id", isLoggedIn, function(req,res){ res.render("profile/profilesettings", { User: req.user }); }); router.post("/settings/profile/:id", isLoggedIn, function(req,res){ User.update({_id: req.session.passport.user.id}, { email: req.body.email, imageUrl: req.body.imageUrl, bio: req.body.bio }, function (err){ console.log(err); }); res.render("profile/profilesettings", { User: req.user }); }) 这是执行更新function的forms。 <form class="form-horizontal" action="/settings/profile/<%= currentUser._id %>" method="POST"> <div class="form-group"> <label class="control-label col-sm-2" for="username">Username:</label> <div class="col-sm-10"> […]

与MainGun的Nodemailer

当用户注册到我的网站时,我试图发送电子邮件。 我决定在Nodemailer和MailGun,并认识到没有很多教程或好的文档,他们一起工作。 对于像MailGun这样的其他服务似乎是一个类似的问题。 下面是我的代码试图让它工作。 我看了一个关于让它工作的教程,但似乎无法弄清楚。 我认为代码是正确的,但也许authentication是错误的? 或者我可以在两个都失败。 我为我的开发环境使用cloud9.io所以也许这是问题? 或者说我的域名尚未validation? 路线: app.post('/signup', setRedirect({auth: '/dashboard', success: '/dashboard', failure: '/signup'}), isUnauthenticated, registrations.postSignup, (req, res) =>{ const output = ` <h1>Your email is: ${req.body.email}</h1> `; // create reusable transporter object using the default SMTP transport let transporter = nodemailer.createTransport({ host: 'postmaster@MYSUBDOMAIN', port: 587, secure: false, // true for 465, […]

主持一个NodeJS应用程序

我使用NodeJS在本地创build了我的个人网站,完美的工作。 但现在,我想在主机上托pipe我的应用程序。 我试图在AppFog上主持,但它不工作,会议不是真的工作,他们有时会销毁,我不知道这是什么问题,因为他们在本地(会议)的作品很好… … – 此外,我得到一个错误的JSDOM模块,它不适用于AppFog,但它在本地安装NodeJS(v0.8.15)。 错误: TypeError: Cannot read property 'implementation' of undefined at exports.env.exports.jsdom.env.processHTML (/mnt/var/vcap.local/dea/apps/anthonycluse-1- 0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/jsdom/lib/jsdom.js:178:59) at Object.exports.env.exports.jsdom.env (/mnt/var/vcap.local/dea/apps/anthonycluse-1- 0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/jsdom/lib/jsdom.js:269:5) at exports.index.Creation.findAll.success.Post.findAll.success.async.map.res.render.creations (/mnt/var/vcap.local/dea/apps/anthonycluse-1- 0c3b7373ee2a0a1334d2ea77a9bf22c8/app/routes/index.js:50:23) at _asyncMap (/mnt/var/vcap.local/dea/apps/anthonycluse-1-0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:222:13) at async.each (/mnt/var/vcap.local/dea/apps/anthonycluse-1-0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:99:13) at Array.forEach (native) at _each (/mnt/var/vcap.local/dea/apps/anthonycluse-1-0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:32:24) at async.each (/mnt/var/vcap.local/dea/apps/anthonycluse-1-0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:98:9) at _asyncMap (/mnt/var/vcap.local/dea/apps/anthonycluse-1-0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:221:9) at Object.doParallel [as map] (/mnt/var/vcap.local/dea/apps/anthonycluse-1- 0c3b7373ee2a0a1334d2ea77a9bf22c8/app/node_modules/async/lib/async.js:199:23) 我可以在哪里托pipe我的NodeJS网站没有问题? 安东尼

为什么我的req.user在加载时始终为空?

我已经挣扎了好几天,取得了一些很好的进展,但是我不能让我的课程工作得很好。 我已经成功地使用Passport来与Facebook进行身份validation。 当我用FBbutton点击我的login时,会话完全加载,我有我的req.user对象都准备好去,但在我看来,我应该只需要做一次。 我知道护照保存了一个cookie。 我已经看了看,看到工作。 我试图检测用户是否已经login在我的索引页的负载,但是当我加载页面的req.user对象始终为空,我的passport.deserializeUser方法永远不会被调用来加载它(如果我点击login到FBbutton它确实被调用)。 所以我的问题是,你如何告诉护照页面加载检查cookie和加载用户会话,如果有的话? 更新 – 好的,所以对于那些稍后发现这个问题的人,我只想回顾一下我在这里学到的东西(感谢那些评论过的人)。 希望这会帮助其他人。 我习惯了不pipe服务器如何生存的.NET cookies。 Node.js和护照不在同一个前提下工作。 默认情况下,node.js使用内存来保持会话。 当您closuresterminal/命令行中的节点(每次更改服务器代码时都必须执行此操作)时,内存存储cookie信息将被重置,因此任何与其关联的cookie都是无意义的。 为了解决这个问题,我安装了Redis( http://cook.coredump.me/post/18886668039/brew-install-redis ),并把它作为我的商店( http://www.hacksparrow.com/use-redisstore-而不是memorystore-express-js-in-production.html )。 这将在Azure上工作,这是我计划的生产服务器,因此一切正常。 好的,这是一些代码。 我不确定放什么部分… 这是server.js /** * Module dependencies. */ var express = require('express') , app = express() , partials = require('express-partials') , http = require('http') , server = http.createServer(app) , io = require('socket.io').listen(server) , […]

护照本地策略不保存cookie或会话中的用户

我试图使用快递4护照,并通过本地策略进行validation。 我试图让一个简单的设置工作,但我有问题。 我尝试使用授权中间件function进行身份validation… deserializeUser永远不会被调用,req.user是未定义的,并且会话和cookie中缺less用户数据。 谁能帮我? 我的server.js文件: var express = require('express'); var app = express(); var path = require('path') var port = process.env.PORT || 3000; var argv = require('minimist')(process.argv.slice(2)); var dust = require('express-dustjs') var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session'); var passport = require('passport'); var LocalStrategy = […]

如何用Node和Express来validationgithub

我有我的节点示例使用Express和node-github。 我正在请求令牌,以便用户可以授权应用程序创build一个要点。 我遇到的问题是要像一个匿名用户创build的要点。 如果我从代码中删除了github.authenticate,它是以匿名方式创build的。 如果我离开github.authenticate没有创build要点,并没有显示错误。 我认为这个问题包括我必须在哪里findgithub.authenticate。 我有我的callback app.get('/auth/github/callback',function (req, res) { var url = Url.parse(req.url); var path = url.pathname; var query = querystring.parse(url.query); var code = req.query.code; console.log('/callback'); OAuth2.AuthCode.getToken({ code: code, redirect_uri: 'http://127.0.0.1:3000/auth/github/callback' }, saveToken); github.authenticate({ type: "oauth", token: accessToken }); res.redirect('home'); function saveToken(error, result) { if (error) { console.log('Access Token Error', error.message); } accessToken […]

Node.js在会话过期Express&Passport上运行function

我有一个最大的会话时间设置使用下面的代码(与Express.js&Passport.js)。 app.use(express.session({ cookie: { maxAge : 3600000 } })); 如果会话过期(我的日志文件和分析),我想运行一个函数。 一些沿着这条线: app.use(express.session.onExpiry(function(user){ console.log('User session for ' + user + ' has expired.') }); );

将本地值传递给电子邮件模板使用Express-Mailer

我想在用户注册后发送一封感谢电子邮件,但我不知道如何将用户名传递给我的电子邮件模板。 我有以下代码: app.mailer.send('email', { to: 'newuser@gmail.com', // REQUIRED. This can be a comma delimited string just like a normal email to field. subject: 'Test Email', // REQUIRED. user: req.body.user, // All additional properties are also passed to the template as local variables. }, function (err) { if (err) { // handle error console.log(err); res.send('There was […]

护照req.isAuthenticated()总是返回fasle

我正在尝试使用快速会话来login用户。 我希望用户能够访问个人资料页面并查看他们的用户数据(如果他们已经login)。 在我的routes.js的第9行:req.isAuthenticate()返回false,即使我已经成功login一个用户。 我的最终目标是req.user,护照保存到会话中,在/ passport GETpath中定义,以便我可以将其作为数据发送到我的模板引擎。 https://gist.github.com/anonymous/f6ecb472eb082775181e#file-routes-js-L9 提前致谢