Articles of passport.js

如何处理asynchronous。 findOrCreate护照和mongoose的方法

身份validation模块“Passport”需要FindOrCreate方法才能进行login。 我正在使用mongoose为了保存我的用户以下模式: var UserSchema = new Schema({ firstname: String, lastname: String, email: String, accounts: [] }); accounts数组包含代表Facebook帐户的对象,如{provider: "facebook", uid: "someFacebookId"} 。 我的身份validation策略如下所示: // Authentication Strategy passport.use(new FacebookStrategy({ clientID: CONFIG.fb.appId, clientSecret: CONFIG.fb.appSecret, callbackURL: CONFIG.fb.callbackURL }, function(accessToken, refreshToken, profile, done) { // asynchronous verification, for effect… process.nextTick(function () { User.find({ 'accounts.uid': profile.id, 'accounts.provider': 'facebook' }, function(err, olduser) […]

passport.js – facebook策略注销问题

我正在尝试使用此login示例设置Facebook身份validation。 示例工程,但是当我注销并尝试再次login护照自动让我在没有给我一个选项来更改Facebook用户。 任何想法如何改变这种行为?

unit testing用passport.js和express.jslogin

我试图testing我的本地login。 我已经用passport.js实现了,遵循它的指导并遵循这个MEAN框架。 我很确定实现是正确的,但是总是失败的testing有问题。 如果authentication失败,应该redirect到“/ signin” 如果authentication是正确的,应该去“/” 但是当我testing时,authentication总是失败。 这是routes.js : module.exports = function(app, passport, auth) { var users = require('../app/controllers/users'); app.get('/signin', users.signin); app.post('/users/session', passport.authenticate('local', { failureRedirect: '/signin', failureFlash: 'Invalid email or password.' }), users.session); var index = require('../app/controllers/index'); app.get('/', index.render); passport.js : var mongoose = require('mongoose'), LocalStrategy = require('passport-local').Strategy, User = mongoose.model('User'), config = require('./config'); module.exports […]

Passport serializeUser()不会使用此authenticate()callback进行调用

使用passport.js,我这样写路由,所以我有权访问MongoDb文档userDoc 。 但是,这样做的时候… passport.serializeUser()永远不会被调用, req对象将会丢失user 。 auth.route('/auth/facebook/callback') .get(function(req, res, next) { passport.authenticate('facebook', function(err, userDoc, info) { if (err) { return next(err); } // I don't think !userDoc will ever happen because of mongo upsert if (!userDoc) { return res.redirect('/login'); } res.cookie('facebookPicUrl', userDoc.value.facebook.picture, {maxAge : 9999999, httpOnly: false, secure: false, signed: false }); res.redirect('http://localhost:9000/users') })(req, res, […]

刷新Passport.js中的令牌

我如何在Passport.js中执行此操作? 访问令牌到期时,可以使用refresh_token来“刷新”您的访问权限,并获得另一个access_token。 要使用refresh_token,您需要对grant_type设置为refresh_token的token-endpoint执行POST请求: https://podio.com/oauth/token?grant_type=refresh_token&client_id=YOUR_APP_ID&client_secret=YOUR_APP_SECRET&refresh_token=REFRESH_TOKEN

Passport身份validationcallback不传递req和res

这个身份validation正常工作,我得到一个redirect: server.post(authPostRoute, passport.authenticate( 'local' , { successRedirect: '/', failureRedirect: '/login' } )); 这个authentication在呼叫回叫后挂起: server.post(authPostRoute, passport.authenticate( 'local' , function(){ console.log('Hitting the callback'); console.log(arguments)} )); 这logging了以下内容: { '0': null, '1': { id: [Getter/Setter], firstName: [Getter/Setter], lastName: [Getter/Setter], email: [Getter/Setter], addedOn: [Getter/Setter], active: [Getter/Setter], password: [Getter/Setter] }, '2': undefined } 但在整个文档( http://passportjs.org/guide/authenticate/ )看起来好像它通过req和res,但它显然不是。 然后调用callback的代码: node_modules \护照\ LIB \中间件\ […]

我如何在节点中用Passport.js模拟另一个用户?

在Node中使用Passport.js,有没有办法让一个用户冒充另一个用户呢? 例如。 作为应用程序的pipe理员,我希望能够以其他用户的身份login,而无需知道密码。 最简单的,我会满意,如果我可以改变序列化的用户数据(用户ID),所以当deserializeUser被调用时,它将只是假设替代用户的身份。 我已经尝试更换req._passport.session.user和req._passport.session.user的值,但净效果只是我的会话似乎变得无效,护照注销我。

Express:是否可以绕过静态文件的会话?

我正在使用Express + Mongoose + Passport + Connect-mongo的一个非常简单的设置,一切工作正常。 唯一让我困惑的是,我可以看到passport.unserializeUser甚至为静态文件调用,从我的应用程序的angular度来看 – 绝对没有意义。 我可以理解,在某些情况下,您希望静态文件也可以在某种授权下进行服务,但是我想知道如何在“服务”静态文件的情况下“跳过”整个会话中间件。 (在生产环境中,我无法使用cookies作为资产)

使用passport.js将本地策略连接到另一个(Facebook,Twitter,Google等)

我有一个node.js应用程序使用通行证(与一个修改的passport本地login策略)进行身份validationpipe理。 我想允许用户使用护照策略连接他们的社交networking帐户,但是从我所看到的现有身份validation(在请求对象上)在新的身份validation时被覆盖。 我应该如何处理这个?

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