Articles of passport.js

错误:无法序列化用户进入会话(Node JS,Passport JS)

在尝试使用Passport.JSlogin/注册用户的Google帐户时出现错误。 代码如下: const passport = require('passport'); const GoogleStrategy = require('passport-google-oauth20'); const keys = require('./keys'); const User = require('../models/user'); passport.serializeUser((user, done) => { done(null, user.id) }); passport.deserializeUser((id, done) => { User.findById(id).then(foundUser => done(null, foundUser)) .catch(err => console.log(err)); }); passport.use( new GoogleStrategy({ callbackURL: '/auth/google/redirect', clientID: keys.google.clientID, clientSecret: keys.google.clientSecret }, (accessToken, refreshToken, userInfo, done) => { User.find({ googleId: […]

电子邮件validation后无法创build用户

我使用passport.js和mailgun-validate-email来尝试validation电子邮件,然后根据该电子邮件创build一个用户帐户。 我可以得到它来validation电子邮件,但它不会完成POST请求实际创build用户。 它最终会显示一个日志,但是它甚至不会给出我觉得奇怪的状态代码。 我正在用摩根来看这个。 Passport.use注册中间件 passport.use('signup', new LocalStrategy({ usernameField: 'email', passReqToCallback : true }, function(req, email, password, done) { var findOrCreateUser = function(){ console.log(req.body.email); User.findOne({ email: req.body.email }, function(err, existingUser) { if(err){ console.log(err); } if (existingUser) { req.flash('form', { email: req.body.email }); return done(null, false, req.flash('error', 'An account with that email address already exists.')); } […]

NodeJS Passport本地身份validation不起作用

我使用passportjs本地进行身份validation。 它只是redirect到failureRedirect它不显示任何错误,它总是redirect到failureRedirect与原始用户名和密码,以及重复什么是我的代码中的错误 我的passport.js文件: const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const bcrypt = require('bcryptjs'); const Admin = require('../models/admin/user'); const config = require('../config/database'); module.exports = function(passport){ // With local startegy passport.use(new LocalStrategy(function (userName, password, done){ // Match Username let query = {userName:userName}; Admin.findOne(query, function(err, user){ console.log(user); if(err) throw err; if(!user){ console.log('No user Found'); return done(null, […]

错误:invalid_request缺less必需的参数:范围(Restify&Passportjs w / Google OAuth2)

所以,我使用Restify和Passportjs(Google OAuth2策略)遇到了Node.js应用程序的问题。 当我使用passport.authenticate() ,它给我以下错误: 400.这是一个错误。 错误:invalid_request 缺less必需的参数:范围 几年前,我发现了另外一个同样的问题( 在Google Oauth2上使用Google Passportjs时,invalid_request丢失了:范围 )。 作者说他自己终于修好了,但没有发布修复。 有没有其他人遇到这个问题,并能够解决它? 我无法弄清楚。 这是我的代码: authController.js var passport = require('passport'); var GoogleStrategy = require('passport-google-oauth20').Strategy; var auth = { google: { clientID: '<ID>', clientSecret: '<SECRET>', callbackURL: 'https://localhost:8080/auth/google/return', scope: ['profile', 'email'] } }; passport.use(new GoogleStrategy({ clientID: auth.google.clientID, clientSecret: auth.google.clientSecret, callbackURL: auth.google.callbackURL }, function(accessToken, refreshToken, profile, cb) […]

通过nodejs中的电子邮件进行双向身份validation

你好,我正在与nodejs和expressjs进行双向authentication。 在我的网站,你将不得不先login。 如果login成功,用户将收到一封带有密钥和链接的电子邮件,他必须粘贴该密钥。 如果用户打开该链接并粘贴该密钥,我希望用户login。但是,当我在代码中调用passport.authenticate()函数时,用户没有login。 该方法成功redirect到用户页面,这意味着login成功,但仍然没有用户login。 router.post('/loginTwo/:token', function(req, res) { async.waterfall([ function(done) { User.findOne({ twoWayAuthentication: req.params.token, authenticationExpires: { $gt: Date.now() } }, function(err, user) { if (!user) { req.flash('error', 'password-token has expired'); return res.redirect('back'); } if (user.twoWayAuthenticationPassword == req.body.twoWayAuthenticationPassword) { user.twoWayAuthenticationPassword = undefined user.twoWayAuthentication = undefined; user.authenticationExpires = undefined; console.log(reqlogin.body); console.log(req.body); user.save(function(err) { passport.authenticate('local', { successRedirect: […]

护照 – 用户在login后总是被authentication一次

这是我使用护照的第一个项目,我从来没有处理过身份validation。 我遵循这个指南我的应用程序: https : //github.com/webdevboy/node-express-jade–passport-mssql 和我的代码大部分身份validation是一样的指南 我的问题是,login后,即使这些用户没有经过身份validation,也可以使用相同的IP访问在不同浏览器和PC上进行身份validation的用户的configuration文件页面。 我查找了我的问题的原因,但找不到解决scheme。 这是会话的代码: app.use(session({ cookie: { maxAge: new Date(Date.now() + (7 * 24 * 60 * 60 * 1000)) }, secret: 'secret', resave: false, name: "ucompany", saveUninitialized: true })) 我真的很感激任何帮助,因为我从来没有这样做过,我有点失落。

google-oathlogin后挂起的node.js / express /护照

我正在尝试学习node.js,并且在使用google oauth做快速login存储cookie时感到头疼。 我正在使用mongodb,用户得到保存没有问题。 我可以login就好了,但是当我设置cookie baaaam。 但是在控制台上没有错误。 如果我尝试使用Cookie会话设置cookie,并且表示应用程序挂起,我甚至不能访问任何path“/”甚至是“/注销”。 我只能访问他们,如果我清除浏览器上的cookies。 我被困在这一点上。 这是我的app.js app.use( cookieSession({ maxAge: 30 * 24 * 60 * 60 * 1000, keys: [keys.cookieSession] }) ); app.use(passport.initialize()); app.use(passport.session()); 我的路线 app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }) ); app.get('/auth/google/callback', passport.authenticate('google')); app.get('/api/logout', (req, res) => { req.logout(); res.send(req.user); }); 和我的passport.js passport.serializeUser((user, done) => { done(null, user.id); }); […]

护照个人资料ID

我使用passport.js为我的node.js应用程序提供OAuth身份validation。 但我有一个疑问: 当我在validation(当您定义OAuth策略时)收到configuration文件对象时,对于所有提供者是唯一的还是特定于该提供者? passport.use(new FacebookStrategy({ clientID: conf.fb.appId, clientSecret: conf.fb.appSecret, callbackURL: "http://local.host:3000/auth/facebook/callback" }, function(accessToken, refreshToken, profile, done) { var user = users[profile.id] || (users[profile.id] = { id: profile.id, name: profile.username }); done(null, user); } ));

通过PassortJS将本地用户连接到Facebook / Twitter

我有一个现有的用户群,我想让他们与他们的Facebook / Twitter帐户链接。 看起来我可以使用passportjs但是有困难, 现在,一个url传递给他/她的用户/传递,我做了一个本地stragety,并查找用户。 然后我想执行一个我认为的授权。 我得到了facebook promopts询问是否允许,并且我用accessToken命中了callback,但是我没有办法将该令牌绑定到我的db中的现有用户,因为我现在看到了获取请求信息的方式。 passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(user, done) { Users.findOne({_id: user._id}, function(err, user) { return done(err, user); }); }); passport.use(new LocalStrategy({ passReqToCallback: true }, function(req, username, password, done) { Users.findOne({_id: username}, function(err, user) { return done(null, user); }); } )); passport.use(new FacebookStrategy({ clientID: 'xxxx', clientSecret: 'xxxx', callbackURL: […]

Passport.js – 在会话中存储信息

我目前有一个mongoose/快递/ passportjs应用程序,我可以成功login和退出。 但是,只有用户标识存储在会话中。 我希望商店的整个用户对象。 这是我使用的代码: passport.serializeUser(function(user, done) { done(null, user._id); }); passport.deserializeUser(function(_id, done) { done(null, { _id: _id }); }); 伟大的作品,这就是为什么我试图序列化整个用户: passport.serializeUser(function(user, done) { done(null, user._id); }); passport.deserializeUser(function(user, done) { done(null, user); }); 但是,它不存储任何会话。 我究竟做错了什么?