Articles of passport.js

passportjsauthentication使用谷歌应用程序的电子邮件ID

我正在尝试护照与谷歌应用程序电子邮件ID的JS。 我能够使用gmail.com电子邮件ID进行身份validation。 但是,如果电子邮件ID是谷歌应用程序ID(google.com/a/companyname.com),我如何才能进行身份validation。 这是我的代码 var express = require('express'); var app = express(); var passport = require('passport'); var GoogleStrategy = require('passport-google').Strategy; passport.use(new GoogleStrategy({ returnURL: 'http://10.3.0.52:3000/auth/google/return', realm: 'http://10.3.0.52:3000/' }, function(identifier, profile, done) { User.findOrCreate({ openId: identifier }, function(err, user) { done(err, user); }); } )); app.get('/auth/google', passport.authenticate('google')); app.get('/auth/google/return', passport.authenticate('google', { successRedirect: '/', failureRedirect: '/login' })); app.get('/', function(req, […]

在Passport.js中configuration本地策略

我有点新Node.js和以下是我的问题。 我有这样的代码, passport.authenticate('local', function (error, user, info) { console.log("authentication happening"); console.log(info); if (error) { return res.send(error); } else if (!user) { return res.send("User not found"); } else { req.logIn(user, function (error) { if (error) { return res.send(error); } else { return res.json( { id: user }); } }); } return false; })(req, res, next); //如果我删除了最后一组参数,它不会给出错误,它会做什么? […]

.call(this)在JavaScript中的成语

在一些JavaScript中,我看到: var passport = require('passport') function Strategy(options, verify) { //… passport.Strategy.call(this); } 什么是passport.Strategy.call(this); 在做什么?

Github的OAuth v3 API的passport-github支持

我注意到https://github.com/jaredhanson/passport-github模块支持OAuth v2,但一段时间没有更新。 有谁知道是否会更新,以支持目前的Github OAuth v3 API? 具体而言,我正在寻找一种方法来轻松地添加范围列表(类似于https://github.com/pksunkara/octonode支持),以及通过CSRFvalidation的状态。

使用MEAN堆栈和Passport时,如何在用户注册时保存其他字段?

当用户在我的网站上注册时,我试图保存的不仅仅是电子邮件和密码。 所有护照示例仅显示电子邮件和密码正在存储。 如果我还有用户注册时需要存储的“性别”和“名称”字段怎么办? 我花了整整一天的时间,试图找出没有运气。 这是我目前使用的: passport.js: passport.use('local-signup', new LocalStrategy({ usernameField : 'email', passwordField : 'password', passReqToCallback : true }, function(req, email, password, done) { process.nextTick(function() { User.findOne({ 'email' : email }, function(err, user) { if (err) return done(err); if (user) { return done(null, false, req.flash('signupMessage', 'Email is already taken.')); } else { var newUser = […]

避免在Node.js单身?

我已经多次读过,应该尽可能地避免单身。 通过单身我的意思是这种types的代码 exports = module.exports = new Passport(); 这段代码来自Node.js模块PassportJS。 它允许我们使用护照,并添加一些将在我们的整个代码中共享的var。 所以,你可以看到我们可以做这个代码: https : //github.com/ragulka/sails-starter-app/blob/master/api/controllers/SessionController.js (这只是一个例子,我也是,我也是怪没人)。 请注意,他正在使用require的文件顶部的护照,然后使用之前在代码中添加的策略之一。 显然这很方便,但这是做到这一点的最好方法吗? 有没有办法从先前的代码中的控制器内传递护照variables? 让我知道如果有什么不清楚。 提前致谢。

问题与护照叽叽喳喳战略

我有一个应用程序,我已经与Koa节点写了。 我正在使用护照进行身份validation,Twitter的oauth护照叽叽喳喳,和koa护照,使其与科阿工作。 直到最近,与login的一切都完美。 我开始吸引朋友们对github的一些兴趣,当我试图让新人们关注这个项目时,人们开始有问题无法login并得到这个消息: 哇! 这个页面没有请求令牌。 这是我们需要使用您的Twitter帐户的应用程序的特殊关键。 请回到发送给您的网站或应用程序,然后重试。 这可能只是一个错误。 奇怪的是,我的生产服务器是最新的存储库,并在那里login工作得很好。 我的两台本地机器上的login也同样适用。 当我完全从我的笔记本电脑中删除项目,然后再次将其删除,它也开始有这个问题。 这是我的auth.js中的代码 var passport = require('koa-passport'); var settings = require('./settings'); var Promise = require('../plugins/base/common').Promise; var config = require('../config.json'); passport.serializeUser(function(user, done) { done(null, user) }) passport.deserializeUser(function(user, done) { done(null, user) }) if (process.env.NODE_ENV == "production"){ var domainStr = "http://productionurl.com"; }else{ var domainStr = "http://127.0.0.1:3000"; } […]

jsonwebtoken不会过期

我为node.js使用了jsonwebtoken包: 像这样创build令牌: var token = jwt.sign(user, tokenSecret, {expiresInMinutes: 1}); validation是这样的: jwt.verify(token, tokenSecret, function(err, decoded) { if(err) return done(new Error('Invalid authentication!')); if(!decoded) return done(null, false); return done(null, decoded, { scope: 'all'}); }); 但是我的令牌永远不会过期(我在“请求”之间等了几分钟)。

Passport.js记得我的function

https://github.com/jaredhanson/passport-remember-me passport.use(new RememberMeStrategy( function(token, done) { Token.consume(token, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false); } return done(null, user); }); }, function(user, done) { var token = utils.generateToken(64); Token.save(token, { userId: user.id }, function(err) { if (err) { return done(err); } return done(null, token); }); } )); […]

电子邮件字段在passportjs facebook策略中是可选的

我写了Facebook的login代码,一切正常,我得到用户的电子邮件地址。 但在Facebook上有另一个选项,让用户select我的应用程序将有权访问的数据。 如果用户点击它,他会看到名称和所有需要标记的内容,但是电子邮件是可选的,用户可以将其从要提供给应用程序的数据中移除。 在应用程序上,电子邮件是必需的。 那么如何在Facebook上标记电子邮件? 这是我在代码中使用的代码片段。 passport.use(new FacebookStrategy({ clientID: config.social.facebook.clientID, clientSecret: config.social.facebook.clientSecret, callbackURL: config.url+'auth/facebook/cb', enableProof: false, profileFields:['id', 'name', 'emails'], scope: "email" }, function(accessToken, refreshToken, profile, done) { // doing the rest of the thing } )); // … app.get('/auth/facebook', passport.authenticate('facebook', {scope: ['email']})); app.get('/auth/facebook/cb', passport.authenticate('facebook'), function(req, res, next) { res.redirect("/"); });