Tag: passport.js

更多的Passport.js困境 – 挂在表单提交

我设置了我认为最简单的auth可能 – 一个网站加载在login屏幕上,用户input凭据的forms,提交我使用Passport.JS和Sequelize检查凭据。 大多数这些都是从各种教程,或护照网站本身复制。 不pipe我做什么,只要点击表单提交button,网站就会挂起。 在开发工具networking选项卡,我只是显示发送请求/login为挂起。 为了消除所有可能的附加问题,我剥离了Sequelize,并使用硬编码的用户,在护照github页面上使用本地使用示例。 不过,对Sequelize来说没有任何改变,这不是问题所在。 我确定这是愚蠢的。 我已经尝试了明显的解决scheme,例如确保我的表单正在发送“用户名”和“密码”。 我的表单看起来像这样: form(method="post", action="/login") fieldset legend Please Log In label(for="username") Username: input#username(type='text', name="username", autocomplete="off") label(for="password") Password: input#password(type='password', name="password") button#login(type="submit") Log In 在节点中,我的app.js使用一个路由器,其中包括: var login = require('../app/controllers/login'); app.get('/', login.index); app.post('/login', login.auth); 获取请求的页面加载正常。 在发布后,它指向这个: exports.auth = function (req, res, next) { console.log(req.body); passport.authenticate('local', { successRedirect: '/home', failureRedirect: '/', […]

passport.deserializeUser为每个HTTP请求执行一个DB(sequelize)命令

我使用sequelize作为ORM和passport.js(passport-local)进行身份validation。 我注意到每个HTTP请求都会产生一个单独的数据库命令。 我开始看deserializeUser()函数。 当加载一个单一的页面,这是我得到的: 执行:SELECT * FROM Users WHERE Users 。 id = 1 LIMIT 1; 一遍一遍又一遍! GET / 200 12ms – 780 执行:SELECT * FROM Users WHERE Users 。 id = 1 LIMIT 1; 执行:SELECT * FROM Users WHERE Users 。 id = 1 LIMIT 1; 一遍一遍又一遍! GET /js/ui.js 304 4ms 一遍一遍又一遍! GET /stylesheets/main.css […]

使用passport-facebook从Facebook上检索照片

我可以通过passport-facebook获取基本的用户信息,按照下面的代码保存在mongodb中: app.get("/auth/facebook", passport.authenticate("facebook", { scope : ["email", "publish_stream", "user_location", "user_hometown", "user_birthday", "read_friendlists"]})); app.get("/auth/facebook/callback", passport.authenticate("facebook",{ successRedirect: '/', failureRedirect: '/'})); var mongoose = require('mongoose'), FacebookStrategy = require('passport-facebook').Strategy, Users = mongoose.model('Users'); module.exports = function (passport, config) { passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { Users.findOne({ _id: id }, function (err, user) { done(err, user); }); }); […]

本地主机上的护照google oauth

我在使用护照进行身份validation时很新,因此大量的代码片段 我的服务器configuration为: var router = require('./app/config/routes'); var googleStrategy = require('./app/config/passport'); var session = require("express-session"); var passport = require('passport'); app.use(session({secret : '<secret-key>'})); app.use(passport.initialize()); app.use(passport.session()); googleStrategy(passport); 我的路线configuration为 module.exports = function(app, passport) { app.get('/auth/google', function() { passport.authenticate('google', {scope: ['profile', 'email']}); }); app.get('/auth/google/callback', function() { passport.authenticate('google', { successRedirect: '/profile', failureRedirect: '/fail' }); }); …. ALSO configured /profile and /fail […]

req.user undefined – node + express + passport-facebook

我试图获得护照与我的节点快递服务器一起工作。 我可以用Facebooklogin并在我的数据库中find正确的用户; 但是,当我redirectreq.user总是未定义。 这是我的服务器代码: var express = require('express'), path = require('path'), http = require('http'), passport = require('passport'), FacebookStrategy = require('passport-facebook').Strategy, user = require('./routes/users'); var app = express(); passport.use(new FacebookStrategy({ clientID: "HIDDEN", clientSecret: "HIDDEN", callbackURL: "http://MYURL.com/auth/facebook/callback", passReqToCallback: true }, function(req, accessToken, refreshToken, profile, done) { user.findOrCreate(profile, function(err, user) { if (err) { return done(err); } done(null, […]

Nodejs + Passport.js + Redis:如何在Redis中存储会话

我读过这个主题Node.js + express.js + passport.js:保持身份validation之间的服务器重新启动 ,我需要完全相同的事情,但对于Redis。 我用这样的代码: var RedisStore = require('connect-redis')(express); app.use(express.session({ secret: "my secret", store: new RedisStore, cookie: { secure: true, maxAge:86400000 } })); 它不起作用。 要连接Redis,我使用connect-redis模块。 我做错了什么? 谢谢! UPD :我没有得到任何错误。 为了确保auth进程成功,我添加了日志行,并执行。 function(email, password, done) { // asynchronous verification, for effect… process.nextTick(function() { findByEmail(email, function(err, user) { if (!user) { return done(null, false, { message: […]

req.session.passport为空,反序列化用户未调用 – ExpressJS,护照

我在使用Passport / ExpressJS中的会话时遇到问题。 当我loginreq.session ,我可以看到护照是{} : { cookie: { path: '/', _expires: Mon Sep 29 2014 19:37:16 GMT-0300 (BRT), originalMaxAge: 3594522, httpOnly: true, secure: true }, passport: {} } 另外,我正在使用Facebook进行身份validation,并且没有调用passport.deserializeUser 。 这是我的代码: passport.use(new FacebookStrategy({ // pull in our app id and secret from our auth.js file clientID : configAuth.facebookAuth.clientID, clientSecret : configAuth.facebookAuth.clientSecret, callbackURL : configAuth.facebookAuth.callbackURL […]

当Serialize和Deserialize调用护照js时

我必须知道何时调用Serialize和Deserialize。 为了testing我把alert(user.id)但没有发生任何行动。 我有一些疑问是: – 从user对象已收到passport.serializeUser(function(user, done){… 在这里发挥process.nextTick()作用 如果发送多个表单值(如姓名,电子邮件,密码,地址,手机),如何调用callback函数,即function(req, email, password, done) )。 这是代码: – //config/passport.js var LocalStrategy = require('passport-local').Strategy; var User = require('../app/models/user'); module.exports = function(passport) { passport.serializeUser(function(user, done) { alert(user.id);//// Here is my testing alert done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); }); passport.use('local-signup', new LocalStrategy({ usernameField : […]

新用户注册后立即进行Passport身份validation

我正在尝试validation并在/register表单上提交POST后立即login用户。 理想情况下,我希望用户能够注册,然后立即redirect到仪表板,而无需再次input凭据。 我的服务器正在使用Passport 0.1.17,本地策略configuration为使用电子邮件地址和密码login。 目前的代码是: app.post('/register', function(req, res) { // attach POST to new User variable var registerUser = new User({ email: req.body.email, password: req.body.password, name: req.body.name }); // save registerUser Mongo registerUser.save(function(err) { if(err) { console.log(err); } else { console.log('registerUser: ' + registerUser.email + " saved."); } }); // here is where I am […]

Nodejs和PassportJs:在passport之后redirect中间件。如果authentication失败,authentication不被调用

我没有login页面,而是我有一个login表单出现在每一页上。 我想将用户redirect到他们所在的同一页面,无论身份validation是否成功(使用适当的Flash消息) 采取以下代码: app.post('/login', validateLogin, passport.authenticate('local-login'), function(req, res) { var redirectUrl = '/'; if(req.body.to.length > 0){ redirectUrl = req.body.to; } console.log("THIS IS ONLY CALLED IF passport.authenticate() IS SUCCESSFUL"); res.redirect(redirectUrl); }); 如果authentication通过,我只能看到上面最后被调用的中间件。 如果失败,那么护照似乎是以get请求的forms将我redirect到/ login。 在我的应用程序这个页面不存在。 如果我传递一个额外的选项对象作为参数在护照validationfunction,那么这个工程: app.post('/login', validateLogin, passport.authenticate('local-login', { successRedirect : '/', // redirect to the secure profile section failureRedirect : '/signup', // redirect back […]