Articles of passport.js

在Node.js Passport的Google策略上自定义returnUrl

我正在使用Express和Passport OpenID Google战略,并且我想在每个auth请求上设置returnURL以便能够返回到启动该auth的页面。 情况是,我有HTML5幻灯片应用与Node.js后端(与社会的东西和编辑器,门户和扩展… https://github.com/bubersson/humla ),我希望能够login用户一些幻灯片(通过滑动菜单…),但是我希望他能轻松回到相同的幻灯片。 所以我需要这样的东西? app.get('/auth/google', function(req,res) { var cust = "http://localhost:1338/"+req.params.xxx; passport.authenticate('google', returnURL:cust, function … } 我已阅读护照指南,但仍不知道如何去做。 我知道这不是安全的,但我还能怎么做呢? 或者我怎样才能使应用程序返回到login发起的页面? 还是有办法使用AJAX进行OpenID身份validation(仍然可以使用护照)?

护照 – 脸书 – 不能得到about_me和电子邮件configuration文件字段

我正在尝试使用passport-facebook为我的应用程序build立一个login系统。 除了从请求中返回未定义的2个字段之外,一切进展顺利。 我会发布我的整个代码的login程序,因为我没有看到有关它的很多信息,即使在这个问题有很多问题。 这是app.js中的configuration var passport = require('passport'); var FacebookStrategy = require('passport-facebook').Strategy; passport.serializeUser(function(user, done) { done(null, user.facebookId); }); passport.deserializeUser(function(id, done) { routes.findUserById(id, function(err, user) { done(err, user); }); }); passport.use(new FacebookStrategy({ clientID: FACEBOOK_APP_ID, clientSecret: FACEBOOK_APP_SECRET, callbackURL: FACEBOOK_CALLBACK_URL, profileFields: ['id', 'displayName', 'link', 'about_me', 'photos', 'email'] }, routes.handleLogin )); 使用护照初始化和会话 app.use(passport.initialize()); app.use(passport.session()); 实际的请求处理,请注意我正在使用正确的范围 app.get('/auth/facebook', passport.authenticate('facebook', { scope: […]

我是否实现序列化和反序列化NodesJS + Passport + RedisStore?

我是否实现序列化和反序列化? RedisStore被设置为我的会话存储与Express。 这是否意味着我不执行序列化和反序列化? 会自动发生吗? 当我不执行这些方法时,我得到以下快速错误 – 500错误:无法序列化用户进入会话。 当我执行它们时,我不确定要在反序列化中放置什么。 下面的代码似乎工作,但会议不坚持。 我每次访问该网站时都需要login。 在NodeJS + Passport + RedisStore的任何地方都有一个很好的例子吗? var sessionStore = new RedisStore({ host: rtg.hostname, port: rtg.port, db: redisAuth[0], pass: redisAuth[1] }); passport.use(new ForceDotComStrategy({ clientID: clientId, clientSecret: clientSecret, callbackURL: myurl }, function(token, tokenSecret, profile, done) { console.log(profile); return done(null, profile); } )); appSecure.configure('production', function(){ appSecure.use(allowCrossDomain); appSecure.use(express.cookieParser(expressSecret)); appSecure.use(express.bodyParser()); appSecure.use(express.methodOverride()); […]

使用Passport和OAuth2 +社交networking的NodeJS REST身份validation

我正在使用NodeJS处理REST API。 为了validation,我决定使用Passport 。 我想要真正的RESTful API。 所以这意味着我必须使用令牌而不是会话。 我想让用户使用用户名和密码login,或使用Facebook,Google和Twitter等社交networking。 我使用我自己的OAuth2.0服务器来使用oauth2orize模块发出Access和Refresh tokens 。 所以,现在我可以注册新用户,然后颁发他们的令牌。 我遵循这个教程: http://aleksandrov.ws/2013/09/12/restful-api-with-nodejs-plus-mongodb/ validation路由的用户: // api ———————————————————————————— app.get('/api/userInfo', passport.authenticate('bearer', { session: false }), function(req, res) { // req.authInfo is set using the `info` argument supplied by // `BearerStrategy`. It is typically used to indicate scope of the token, // and used in access control […]

持护照,mongodb和快递会议

我正在使用护照来处理我的应用程序中的身份validation和会话。 我坚持使用mongostore的会话MongoDB。 一般来说设置工作正常。 但是,当我重新启动服务器时,所有的用户都注销了,所以显然会话被保存在内存中,而不是只保存到mongodb。 我正在尝试实现一个用户在重新启动服务器时仍然login的设置。 基本configuration如下 中间件 app.use(express.cookieParser('your secret here')); app.use(express.session()); app.use(passport.initialize()); app.use(passport.session({ maxAge: new Date(Date.now() + 3600000), store: new MongoStore( { db: mongodb.Db( conf.mongodbName, new mongodb.Server( 'localhost', 27017, { auto_reconnect: true, native_parser: true } ), { journal: true } ) }, function(error) { if(error) { return console.error('Failed connecting mongostore for storing session data. %s', […]

如何添加“记住我”与我的护照应用程序

login时需要“记住我”checkbox。 我使用护照之前添加一个中间件 app.use(function (req, res, next) { if (req.method == 'POST' && req.url == '/login') { if (req.body.rememberme) { req.session.cookie.maxAge = 1000 * 60 * 3; } else { req.session.cookie.expires = false; } } next(); }); app.use(passport.initialize()); app.use(passport.session()); 当req.body.rememberme为真时,我无法login,并且在req.body.rememberme为false时记住用户。 我也试过连接,确保login,它仍然是错误的。 另一个问题是:我应该在什么时候删除我的数据库中的cookies,以及如何? 🙂 其他代码与护照指南完全相同 路线: app.get('/', passport.authenticate('local', {failureRedirect: '/login'}), function (req, res) { res.redirect('/user/home'); }); app.post('/login', […]

Passport本地策略完成callback不会传递错误json消息

我想通过一个JSON消息,当身份validation失败,使用完成callback在LocalStrategy,但我得到的是401和“未经授权”string的响应。 var express = require('express'); var bodyParser = require('body-parser'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var app = express(); app.use(bodyParser.json()); app.use(passport.initialize()); passport.serializeUser(function(user, done) { done(null, user.email); }); var strategy = new LocalStrategy({ usernameField: 'email' }, function (email, password, done) { if (email === 'test@gmail.com' && password === 'pass') { return done(null, { email: […]

Nodejs Passportvalidationcallback没有被调用

使用Nodejs Passport,我testing了使用以下代码发生错误时会发生什么情况: passport.use(new LocalStrategy( function(username, password, done) { // asynchronous verification, for effect… process.nextTick(function () { findByUsername(username, function(err, user) { console.log('in auth function'); return done('errortest'); if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Unknown user ' + username }); } if (user.password != password) { return done(null, false, { […]

Angular / Node / Express / Passport跨域问题 – 启用CORS Passport Facebook身份validation

尝试使用Passport在NodeJS / Express中使用Facebook对用户进行身份validation时,已经有两天,一百万次尝试启用CORS。 我在Chrome上遇到的错误是这样的: XMLHttpRequest cannot load https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…%3A8080%2Fauth%2Ffacebook%2Fcallback&scope=email&client_id=598171076960591. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. 我使用的路线非常简单: // ===================================== // FACEBOOK ROUTES ===================== // ===================================== // route for facebook authentication and login app.get('/auth/facebook', passport.authenticate('facebook', { scope : 'email' })); // handle the callback after facebook has authenticated […]

什么是req.isAuthenticated()passportJS

在PassportJS Documention中,我认为护照authenticationfunction没有很好的logging。 我想问,什么passport.isAuthenticated()ID做?