Articles of passport.js

oauthcallback后护照会话消失

制作与Ionic,Angular,nodejs等混合应用程序 用户使用电子邮件和密码login,然后想要将第三方身份validation添加到他们的帐户。 他们被序列化进入会话。 我们使用护照进行检查,如果他们有第三方授权,如果没有发送他们这样做。 当用户回到callbackurl时,我们不知道他们是谁,因为req.session是未定义的。 编辑:我一直在试图简化代码来解决问题的路线。 // require everything and app.use them // this is what I'm using for the session config app.use(session({ secret: 'thisIsASecret', resave: false, saveUninitialized: false, cookie: {secure: true, maxAge: (4*60*60*1000)} })); var user = { // simple user model for testing id: 1, username: 'username', password: 'password', oauthId: null }; passport.serializeUser(function(user, […]

Passport + Node – req.isAuthentiated不是Object.isLoggedIn中的函数

我的代码有一个错误,带有护照function。 我遵循这个教程: 遵循示例教程 我从nodemon server.js中的/ routes文件中得到一个错误: TypeError:req.isAuthentiated不是一个函数 而当我尝试login浏览器窗口(我可以注册,而数据库正在存储用户)这个错误: TypeError: req.isAuthentiated is not a function at Object.isLoggedIn [as handle] 这是一个护照function,我很困惑如何解决这个问题。 server.js: var express = require('express'); var app = express(); var port = process.env.PORT || 8080; var mongoose = require('mongoose'); var passport = require('passport'); var flash = require('connect-flash'); // messages stored in session var morgan = require('morgan'); […]

如何仅在经过身份validation时才给予会话? 任何其他中间件订单将无法正常工作

无论用户是否login,我都有创build会话的问题。 如果仅在用户成功login时才创build会话,我希望它。 否则,如果一个selenium机器人命中…例如,路由route('/users/:username')我的会议收集会充满会议,而不是真正的用户。 我让我的用户永远保持login状态,所以会话cookie设置为一年…如果会话不属于真实用户,则更糟糕。 只有authentication成功,我如何才能将会话返回给客户端? 我尝试了不同的路线和中间件的顺序,但是这是唯一正确工作的顺序。 app.use(session({ secret: 'bob', saveUninitialized: true, resave: true, name: 'curves', cookie: { secure: false, httpOnly: false, maxAge: 365 * 24 * 60 * 60 * 1000 }, store: new MongoStore(storeOptions) })); app.use(passport.initialize()); app.use(passport.session()); app.use('/', auth); app.use('/api/v1', router); // isLoggedIn WOULD NOT WORK IF I PLACED THIS BEFORE PASSPORT/SESSION MIDDLEWARE router.route('/users/:username') […]

Passport.js执行

我一直在看网上的一些passport.js教程,但没有清楚地了解到底发生了什么。 有人能帮我清楚我的疑惑吗? 请先阅读底部的段落。 所以假设我正确地设置了一切,这是login策略: passport.use('login', new LocalStrategy({ passReqToCallback : true }, function(req, username, password, done) { // check in mongo if a user with username exists or not User.findOne({ 'username' : username }, function(err, user) { // In case of any error, return using the done method if (err) return done(err); // Username does not […]

login到一个快速应用程序会破坏其他(相同的服务器)会话

我有两个独立的Express 4.x应用程序在同一台服务器上运行(不同的端口),共享一个MongoDB实例。 他们都使用不同的数据库,并有不同的会话秘密。 我可以单独login到应用程序A或B,而不会出现问题。 我的会议得到保持,一切都很好。 但是,如果我login到A然后login到B,则A中的会话被销毁(反之亦然)。 这两个应用程序具有几乎相同的本地身份validation 他们的serializeUser和deserializeUser是非常原始的(跟随Passport docs几乎到tee)。 看来,当login到A然后B, req.session.passport被销毁,导致req.user不正确序列化应用程序A和会话被认为是无效的。 我开始认为它与两个应用程序在同一台计算机(因此是域)上运行的事实不同,只有端口不同。

Loopback Passport用户为空

所以我试图做一个基本的Facebook与Loopback和护照集成,使用示例应用程序作为指导: https : //github.com/strongloop/loopback-example-passport 我觉得我错过了一件小事,因为req.user总是回来为空,即使一切似乎排队。 这会导致ensureLoggedIn(/failedLogin)每次都会指向失败的login。 这是我的server.js : var loopback = require('loopback'); var boot = require('loopback-boot'); var flash = require('express-flash'); var bodyParser = require('body-parser'); var app = module.exports = loopback(); // Creating a bit of passport var PassportConfigurator = require('loopback-component-passport').PassportConfigurator; var passportConfigurator = new PassportConfigurator(app); // Bootstrap the application, configure models, datasources and middleware. // […]

在使用MySQL的PassportJs中的多个序列化用户

正在开发使用Nodejs与MySQL的应用程序 对于使用passportJS的login身份validation。 在这个应用程序有两个loginpipe理员和另一个客户。 所以分开的表是有用户和注册。 passport.serializeUser(function(user, done) { done(null, { id : user.id, isAdmin : user.isAdmin // or some other property/check }); }); // used to deserialize the user passport.deserializeUser(function(user, done) { var table = user.isAdmin ? 'register' : 'users'; connection.query('select * from ?? where id = ?', [ table, user.id ], function(err, rows) { if […]

Node.js Passport Facebook身份validation没有电子邮件返回

我正在尝试使用来自node.js的护照设置Facebook身份validation。 当我运行该应用程序,并去/ auth /脸书,我去脸书页面给予Facebook的许可,以返回我的电子邮件。 但是,当我点击确定后,我得到一个页面(callback),说:“没有电子邮件与此帐户关联! 根据代码,这意味着profile.emails为空。 我错过了什么? 这些是我启动应用程序时显示的警告。 我不知道他们是否是问题。 express-session deprecated undefined resave option; provide resave option auth.js:44:37 express-session deprecated undefined saveUninitialized option; provide saveUninitialized option auth.js:44:37 这是授权码。 我正在阅读edx的介绍MEAN堆栈课程M101X。 function setupAuth(User, app) { var passport = require('passport'); var FacebookStrategy = require('passport-facebook').Strategy; // High level serialize/de-serialize configuration for passport passport.serializeUser(function(user, done) { done(null, user._id); }); passport.deserializeUser(function(id, […]

MEAN如何处理authentication?

我想知道基本stream程。 据我所知,当调用loginAPI时, passport.js创build会话并将其存储在mongo中。 谁创build会话? 谁创buildcookie? 快递还是护照? 我读到,当其他请求来了,用户对象被附加到它,使用会话ID。 谁做的? Express服务器或passport.js或其他人?

Node.js Passport不会调用下一个函数

我使用Node来构build一个应用程序,使用Passport.js来处理使用本地数据库的用户login。 所以我有下面的代码,当用户去/configuration文件被调用。 成功login后,用户被redirect到/ profile。 根据摩根,这发生了什么。 app.get('/profile', passport.authenticate('local-login', { session : false, failureRedirect : '/login' }), function(req, res) { console.log("testnow"); res.render('profile.ejs', { user : req.user // get the user out of session and pass to template }); }); 我的本地login代码如下。 passport.use('local-login', new LocalStrategy({ // by default, local strategy uses username and password, we will override with email […]