Tag: passport.js

如何使用Passport-Facebooklogin而不redirect?

我正在构build一个phonegap应用程序,它将在服务器端有nodejs。 我想要使​​用passport-facebook策略来实现login,但是它们的callback指定了两个path/ successcallback和/ failurecallback。 有一个单一的页面应用程序,这使得用户redirect到某个页面非常混乱。 我不想从服务器提供静态文件(index.html,login.html),而是让它们在客户端上,并要求客户端进行ajax调用。 到目前为止,我可以将/ auth / facebook调用作为AJAX请求,但由于login策略要求用户redirect,因此我无法收到相同请求的任何响应。 我宁愿要发送一个user_id或名称回成功login用户或向他展示login表单(这也是在电话号码www目录)在失败。 但redirect和CORS错误阻止我这样做。 有什么办法可以实现这个吗? 自从几个星期以来,我一直在寻找这个,但没有成功。 我真的很感谢你的帮助! PS:我宁愿避免从节点服务器发送所有html和静态内容。 编辑:添加login代码,以更好地理解: app.get('/userpage', utility.isLoggedIn, function(req, res) { res.send('User:'+req.user); }); app.get('/', utility.isLoggedIn, function(req, res) { res.redirect('/userpage'); }); app.get('/auth/facebook', passport.authenticate('facebook')); app.get('/auth/facebook/callback',passport.authenticate('facebook', { successRedirect : '/', failureRedirect : '/login' })); app.get('/logout', function(req, res) { req.logout(); res.redirect('/login'); }); utility.isLoggedIn: function isLoggedIn(req, res, next) { […]

护照authentication失败导致redirect循环

我正在使用节点,快递和护照与Facebook身份validation。 我有以下路线(当/facebook/auth/callback是callbackurl): function render(page, req, res) { var user = null; if (req.user) { user = req.user.toObject(); user.isLoggedIn = true; } res.render(page, { user: user }); } app.get('/auth-failure', function (req, res) { res.render('auth-failure'); }); app.get('/auth-success', function (req, res) { render('auth-success', req, res); }); app.get('/facebook/auth', passport.authenticate('facebook', { scope: [ 'email', 'user_about_me', 'publish_actions']})); app.get('/facebook/auth/callback', passport.authenticate('facebook', { failureRedirect: […]

python(django)hashlib vs Nodejsencryption

我正在通过Django站点移植到Node.js,我试图在Node中重新实现Django set密码方法。 这是Django代码 from django.utils.crypto import ( pbkdf2, get_random_string) import hashlib password = 'text1' algorithm = "pbkdf2_sha256" iterations = 10000 salt = 'p9Tkr6uqxKtf' digest = hashlib.sha256 hash = pbkdf2(password, salt, iterations, digest=self.digest) hash = hash.encode('base64').strip() print "%s$%d$%s$%s" % (self.algorithm, iterations, salt, hash) 这里是我到目前为止的Node.js代码: var password = 'text1'; var hashed = crypto.createHash('sha256').update(password, 'utf8').digest(); var salt = […]

Hello.js vs Passport.js?

我一直想知道这一点,我做了一些search,但没有发现(除了这个 ,这是不同的)。 我试图澄清Hello.js和Passport.js之间的差异,并找出两者的用例。 从表面上看,除了客户端和节点中间件外,他们似乎都具有类似的function,而且都是模块化的。 我已经做了一些与护照戳,但还没有尝试过Hello.js。 两个图书馆之间的主要区别是什么,哪个用例更喜欢一个图书馆呢?

使用passport.js中的令牌validation电子邮件

我只是寻找解决scheme,它使validation电子邮件与令牌为我的本地aumentation在passport.js有一些插件或节点的组件可以让我validationeasyer? 或者我必须自己做? 我的控制器 exports.postSignup = function(req, res, next) { req.assert('email', 'Email is not valid').isEmail(); req.assert('password', 'Password must be at least 4 characters long').len(4); req.assert('confirmPassword', 'Passwords do not match').equals(req.body.password); var errors = req.validationErrors(); if (errors) { req.flash('errors', errors); return res.redirect('/signup'); } var user = User.build({ email: req.body.email, password: req.body.password, }); User .find({ where: { email: req.body.email […]

您可以使用Passport进行身份validation而不redirect吗?

我有以下工作代码通过护照本地策略进行身份validation: app.post('/api/login', passport.authenticate('local-login', { successRedirect : '/api/login/success', failureRedirect : '/api/login/error', failureFlash : true })); app.get('/api/login/error', function(req, res) { res.send(401, {error: req.flash('loginMessage')}); }); app.get('/api/login/success', function(req, res) { res.send(200, {user: req.user}); }); 但是,理想情况下,我想处理一条快速路线中的错误和成功消息,而不是redirect到两条额外的路线。 这可能吗? 我尝试使用“自定义callback”,但似乎错误序列化用户出于某种原因。

当属性确实存在时,为什么mongoose模型的hasOwnProperty返回false?

我有这个代码: user.findOne( { 'email' : email }, function( err, User ) { if ( err ) { return done(err); } if ( !User ) { return done(null, false, { error : "User not found"}); } if ( !User.hasOwnProperty('local') || !User.local.hasOwnProperty('password') ) { console.log("here: " + User.hasOwnProperty('local')); // displays here: false } if ( !User.validPass(password) ) […]

Express Passport.js:req.user VERSUS req.session.passport.user

按照这篇文章 http://toon.io/understanding-passportjs-authentication-flow/ 看起来好像PassportJS / Express将login的用户存储在两个地方 req.user 和 req.session.passport.user 为什么呢? 我应该使用哪一个? 当我用护照注销时,是否同时销毁req.user和req.session.passport.user?

护照JS“发送后无法设置标题”

当我用护照JS成功login时得到这个错误。 尝试重新定向到主页,一旦我login。 这样做的代码: app.post('/login', passport.authenticate('local', {failureRedirect: '/login' }), function(req, res) { res.redirect('/'); }); 完整的错误: Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (http.js:644:11) 我错过了什么吗? 不知道为什么这个错误发生。 我仍然能够使用该应用程序,我只是不想要的错误。

Passport身份validation在sails.js应用程序中不起作用

我有一个Sails JS应用程序。 我正在尝试使用Passport.js身份validation层sails-generate-auth来设置身份validation 。 我已经按照他们的文档中给出的步骤configuration了我的应用程序。 但是,当我解除我的风帆应用程序,身份validation不起作用。 我能够访问控制器,即使我没有login(这不是redirect到我的login页面)。 我在api/policies/passport.js添加了一个console.log语句,如下所示: module.exports = function (req, res, next) { passport.initialize()(req, res, function () { passport.session()(req, res, function () { res.locals.user = req.user; console.log(req.user); // added by me next(); }); }); }; 现在,当我在login之前或登出之后访问控制器时,其打印undefined 。 但是,当我login时,它打印我的用户数据。 任何想法,为什么它不检查身份validation? 我正在使用本地身份validation策略,我已经注释了所有其他(Twitter,Facebook的…)