Articles of passport.js

与明文护照:序列化问题与自定义身份validation方法

#set up passport LocalStrategy = require('passport-local').Strategy passport.use(new LocalStrategy({usernameField: 'email'}, (email, password, done) -> User.findOne({ email: email }, (err, user) -> console.log("findone") if err? console.log "error" return done(err) if not user console.log("incorrect username") return done(null, false, { message: 'Incorrect username.' }) if password isnt user.password console.log "NOT" return done(null, false, {message: "Incorrect password" }) console.log "BUT […]

护照js如何configuration某人保持login状态?

在http://passportjs.org/或任何其他地方,如何正确设置用户保持login状态似乎无法find任何内容。 我目前在我的开发机器上获得了本地通行证,但是我不知道login的持续时间是多less,并且找不到有关更改设置的任何信息。 这是因为它被设置在快递或我失踪的东西?

Passport.js只redirect到失败页面,而不调用LocalStrategy

在我的Express.js小应用程序中,Passport.js存在持久性问题:无论我放在LocalStrategy中,我总是被redirect到failureRedirect,显然没有通过LocalStrategy传递…我错了什么? 我怎样才能打印/显示最大的错误日志来跟踪执行? var express = require('express'), passport = require('passport'), LocalStrategy = require('passport-local').Strategy; http = require('http'), path = require('path'), mysql = require('mysql'), flash = require('connect-flash'); var app = express(); // SQL connexion var sqlInfo = { host: 'localhost', user: 'root', password: '', database: 'mex' }; global.client = mysql.createConnection(sqlInfo); client.connect(function(err) { if(err) console.log(err); }); app.configure(function(){ app.set('views', __dirname+'/views'); […]

passportauthentication不能按预期工作

奇怪的行为,在这里。 当我用正确的用户名/密码组合/login时,它确实将我发送到/秘密路线。 当我使用错误的组合时,它会正确地将我的右侧重新导向到我开始的位置。 但是,如果我试图“locking”一条路线,请说: app.get('/mySecretRoute', passport.authenticate('local'), function(req, res, next){ res.json({test:"secret"}); }); 然后我得到一个401: Unauthorized如果我尝试login后打它。看来,一个cookie确实设置,但可能不是正确的。 我已经validation了用户是在本地策略中返回的,并且该序列化确实抓住了正确的用户。 我如何正确configuration护照使用本地策略并locking路由? 我已经看了整个文档,似乎我按照说明。 // all environments app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); mongoose.connect(config.mongo.host + ':' + config.mongo.port + '/' + config.mongo.db_name); app.get('/', routes.index); app.get('/secret', function(req, res, next){ res.render("secret"); […]

Node Express:使用代理时res.redirect中断

我使用Apache ProxyPass(在httpd.conf中configuration),在代理后面运行节点快速应用程序: ProxyPass /nodeapp http://localhost:9009 我的应用程序使用Passport来authentication用户,所以当我访问基本path时,我应该被redirect到login页面: – 旧的redirect: http : //example.com : 9009 – > http://example.com:9009/login – 新的redirect: http : //example.com/nodeapp – > http://example.com/nodeapp/login 不幸的是,redirect不起作用: – redirect中断: http : //example.com/nodeapp – > http://example.com/login 我试图启用快速代理configuration,但这没有什么区别: app.enable('trust proxy'); **编辑:** Ethan在下面的评论中build议,我可以硬编码我所有的path,以适应新的环境,然而这将打破当我的本地计算机上运行的path('/')。 我正在寻找一个更集中的解决scheme,如果可能的话,可以适应不同的运行环境

Primus.io和passport.js

我考虑从Socket.io迁移到Primus.io (由于可伸缩性问题),但我缺less的一个主要插件是一个primus- passportjs授权插件(类似passport.socketio )。 你知道这样的插件或代码示例吗?

validation成功后获取input数据

Iam使用Express NodeJs,护照,连接闪光灯,mongoose 我的问题是: Iam无法理解如何在下一个呈现的页面中检索用户名和密码。 请有人build议我如何做到这一点.. app.js var http = require('http'); var express = require('express'), passport = require('passport') , LocalStrategy = require('passport-local').Strategy, flash = require('connect-flash'), User = require('./routes/userdao.js'); passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ uname: username ,pwd:password}, function(err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect […]

TypeError:无法在Object.handle中读取未定义属性'csrfSecret' – 使用Node.js

我正在制作一个简单的networking应用程序,并尝试添加身份validation。 一切工作正常(分开),直到我试图合并authentication页面与应用程序,并收到此错误消息: “TypeError:无法读取在Object.handle(C:Project \ node_modules \ express \ node_modules \ connect \ node_modules \ csurf \ index.js:46:29)undefined属性'csrfSecret'…” 这里是app.js中的代码,也许你会看到问题的根源在哪里。 var flash = require('connect-flash'); var express = require('express'); var app = express(); app.use(function(req, res, next) { req.db = {}; req.db.tasks = db.collection('tasks'); next(); }) app.locals.appname = 'Name of App' var port = process.env.PORT || 8080; var mongoose […]

令牌在获取访问令牌时已经使用了错误

我正在尝试设置node.js应用程序使用OAuth2.0使用Elance API我正在使用passport.js连接到elance API,到目前为止我们能够正确获取代码。 在使用api方法之前,我需要使用post请求获取请求令牌 。 但是,我收到了“ 已使用的代码 ”错误。 这是我的callback代码 app.get('/callback', passport.authenticate('elance', { failureRedirect: '/failure' }), function(req, res) { console.log('CODE : ' + req.query.code); // this is getting displayed properly var payload = { code: req.query.code, grant_type:'authorization_code', client_id: auth.CLIENT_ID, client_secret: auth.CLIENT_SECRET }; request.post('https://api.elance.com/api2/oauth/token/', payload) .then(function(response) { var x = response.getBody(); console.log('resp::::'+x); res.redirect('/success'); }); }); 我正在使用requestify执行发布请求,并没有使用/调用临时代码的服务器。 这是生成的错误: […]

如何区分经过身份validation的用户在客户端与Passport和node.js?

我使用Passport.js与MongoStore进行身份validation,我使用express作为Web框架。 一旦用户login,他就可以访问某个路线上的内容。 我想提供不同的内容,取决于哪个用户已authentication 。 比方说,在Mongo的members集合中,每个members都拥有一个category或privileges属性,然后我将决定向他展示什么。 我将使用AngularJS来绑定和呈现HTML。 这是我的路线pipe理: app.get('/',function (request, response) { if(request.isAuthenticated()) response.redirect('/admin') else response.sendfile("public/index.html") }) app.get('/admin',function (request, response) { if(request.isAuthenticated()) response.sendfile("views/admin.html") else response.redirect('/') }) app.post('/login', passport.authenticate('local', { successRedirect: '/admin', failureRedirect: '/' }) ) app.get('/logout', function (request, response){ request.session.destroy(function (err) { response.redirect('/'); //Inside a callback… bulletproof! }) }) app.get('*',function (request, response) { response.redirect('/') }) 这是我的Passport.js代码: […]