Tag: passport.js

Nodejs中的PassportJS永远不会调用callback函数

我正在尝试使用护照来validationyammer用户。 它可以通过yammerauthentication页面,我可以点击以允许访问,但function永远不会得到调用。 (正如你可能在我的代码中看到的,我只是想打印所有的accessToken,configuration文件,但它从不打印出来。) 请帮助我,我可能做不好。 var express = require(“express”); var app = express(); var passport = require(“护照”); var YammerStrategy = require(“passport-yammer”)。策略 passport.use(新YammerStrategy({ clientID:“”, clientSecret:“”, callbackURL:“/” }, 函数(accessToken,refreshToken,profile,done){ process.nextTick(function(){ 的console.log( “策略”); 的console.log(configuration文件); 的console.log(的accessToken); 的console.log(refreshToken); }); } )); app.get('/ login',passport.authenticate('yammer')); app.listen(3000); console.log('听取端口3000');

使用express.bodyParser()和passport.js

我正在使用express.js和passport.js在节点服务器上工作。 我处于一个条件,我不想在app.use(passport.initialize())和app.use(passport.session())之前使用express.bodyParser() app.use(passport.session()) 。 如果我在两个护照中间件函数之后执行app.use(express.bodyParser()) ,它们会使req-stream混乱,bodyParser不再工作。 我只想在一些特定的路线使用bodyParser,而不是在整个应用程序。 我做了什么来规避这个错误是以下(在每一个我想保护和使用bodyParser路线): app.post(route, express.json(), passport.initialize(), passport.session(), isAuthenticated, controller); 但是我认为这有点讨厌。 有没有解决办法让它干?

如何序列化/反序列化多个本地策略

我如何序列化/反序列化多个本地策略:我已经尝试过使用PassportJS中的多个本地策略,但不成功。 这是我的代码: passport.use('user', new LocalStrategy( function(username, password, done) { UserSchema.findOne({ username: username }, function(err, user) { // … return done(null, user); }); })); passport.use('admin', new LocalStrategy( function(username, password, done) { adminSchema.findOne({ username: username }, function(err, user) { // … return done(null, user); }); })); passport.serializeUser(function(user, done){ done(null, user.id); }); passport.deserializeUser(function(id, done){ adminSchema.findById(id, function(err, user){ if(err) […]

如何检查当前密码和(如果正确)使用Passport.js本地策略更新密码

我需要编写普通的代码来检查通过表单提交的当前用户密码值,看看它是否与数据库中的现有密码匹配,如果是,请将密码更新为通过同一表单提交的新密码值。 然而,我无法find任何使用Passport.js的方法。 任何人都可以build议如何我可以做到这一点在我的用户控制器下面,如果有任何帮助function提供的护照,我应该使用这个,以及如何做到这一点哈希和咸的密码? 这是我的代码: // Form Submitted req.body = { _id: '5294198b7b35ad2794000001', email: 'testusera1@abc.net', name: 'John Smith', provider: 'local', username: 'ab123', current_password: 'currentpassword', new_password: 'newpassword' } // Route app.put('/users/me', users.update); // Controller var mongoose = require('mongoose'), User = mongoose.model('User'), _ = require('underscore'), passport = require('passport'), LocalStrategy = require('passport-local').Strategy; exports.update = function(req, res) { var user […]

PassportJS不通过身份validation

我究竟做错了什么? 它总是redirect到失败页面,但我无法debugging。 // passport var passport = require('passport'), LocalStrategy = require('passport-local').Strategy, User = require('./models/user.js').Model; passport.use(new LocalStrategy({ usernameField: 'email', passwordField: 'password' }, function(username, password, done) { User.findOne({ username: username }, function(err, user) { console.log('entrou'); if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username.' }); } if (!user.validPassword(password)) { return […]

passport.js难以获得散列密码

我在我的应用程序中使用Passport.js。 我正在使用这种盐: 7PJnpX5okg9ET2pZ2m5eyg== 对于这个哈希密码是: ZKRdKDloN37k9Bt070YMZkrqZw+e5IsFx/mdir3+QAEk1dDSp8+q1YJ57GvAQKU5dWIit55eNgWEcI4hd1N7vw== 现在,当用户login时,我使用这个代码: var userPass = 'testtest' var salt = "7PJnpX5okg9ET2pZ2m5eyg=="; var hashedPassword1 = crypto.pbkdf2Sync(userPass, salt, 10000, 64).toString('base64'); hashedPassword1是不同的: Gav+sH1tUG4xlBZOupBy+hcPMGbg5LexzONJuthJxnsY9/WvX17i2d9n6L292bXVsndHbcJfC2KeY3SL IRBjEw ==

在passportjs响应之前的Expressjs / Change header

我正在尝试更改Nodejs中的WWW-Authenticate头中发送的头挑战。 使用passportjs,我目前的服务器代码如下: router.route('/login/') .get(function(req, res){ if(req.isAuthenticated()) res.redirect('/admin/'); else res.render('admin/partials/login.html'); }) .post(passport.authenticate('digest')); 我面临的问题是,摘要授权首先发送一个401代码响应(这是正常的方式),但大多数浏览器(webkit至less),启动一个提示popin要求用户进行身份validation,当他们发现这样的挑战(摘要或基本)在标题。 我读了一个解决scheme可以是更改标题,修改WWW-Authenticate:Digest为WWW-Authenticate:xDigest例如,但我没有find一种方法来执行它在Express中。 我认为中间件passport.authenticate必须设置标题,并且在响应发送到客户端(我认为是在相同的中间件)之前,我无法find改变它的方法。 感谢您的任何想法。

Facebook身份validation无法正常工作(部署在OpenShift上)

我构build了一个使用Facebook身份validation的应用程序,并在从本地主机运行时按预期工作。 但是,将应用程序部署到OpenShift并使用正确的域名进行testing后,服务器不会保存用户。 开发中的Facebook设置: 生产中的Facebook设置: OpenShift设置: rhc set-env FACEBOOK_ID=id -a <appname-id> rhc set-env FACEBOOK_SECRET=secret -a <appname-secret> 在文档上说,我需要添加这个,但它不起作用: 您还需要设置DOMAIN环境variables rhc config:set DOMAIN=<appname>.rhcloud.com 我重新启动服务器,但始终如一: rhc app-restart -a <appname> 我会很感激任何build议,甚至对我应该问什么问题有任何想法。 更新1 所以我检查日志和GET的唯一区别是: OpenShift GET /auth/facebook 302 3ms – 510b GET /<appname>.rhcloud.com/auth/facebook/callback?code=XXXXXX 200 5ms 本地主机 GET /auth/facebook 302 10ms – 444b GET /auth/facebook/callback?code=XXXXXXXX 302 1360ms – 58b 在OpenShift上它添加了域,有什么想法?

如何在angularjs中访问由passportjs设置的cookie

我真的希望这不是一个愚蠢的问题,但我怀疑是这样。 我search了一切可以理解的事情,但是我仍然不明白如何阅读使用nodejs / express / passport设置的cookie。 我使用Angular的ngCookies和$ cookies服务,但是当我尝试打印出我在服务器端设置的cookie时,我看到了这个(使用console.log($ cookies [“connect.sess”])) s:j:{"passport":{"user":{"id":1,"email":"xxxxxx@yyyy.com","role":"Admin"}}}.0lKpQzpgzCAjgkIayDkUiOLhktIYsohr61U/4xSwWFA 我的cookie在那里。 但是,它们都是作为一个string存储的。 我应该看一个不同的对象吗? 它不会让我访问 – > $cookies["connect.sess"].passport 因为这是不明确的,因为$ cookies [“connect.sess”]返回一个string。 任何提示,我要去哪里错了? 我需要做的就是访问服务器中设置的这些cookie。 我不需要改变它们。 我希望在这方面额外的眼睛会做的伎俩。 我很难过 我尝试通过使用res.cookie设置我自己的cookie。 在我创buildcookie的服务器端,它看起来很好。 但是在那里和angular度之间,它看起来像“j:{我的json曲奇}”这次没有:前面,没有结束的gobble-de-gook。 当然,我可以parsing这些东西,并find我的JSON,但这东西得到补充,为什么? 我做了一些戳动作和快速response.cookie添加j:如果你传递一个对象json的前面。 和s:与json对象之后的blurb是他们签名cookie的方式。 所以我发现我真的不需要护照发送的会话cookie。 我可以使用会话cookie中的userid在服务器端进行身份validation,并使用以下命令创build自己的电子邮件和angular色cookie: res.cookie("email", user.email, {my cookie options}) res.cookie("role", user.role, {my cookie options}) 而不是尝试用json对象填充会话cookie。 我在下面select的答案是我所知道的最好的select。 虽然我觉得很难相信你必须从字符上去掉字符才能正确地获取客户端的cookies。 似乎很奇怪。 我是一个cookie新手,所以如果任何人有一个解释或阅读的好链接,我很乐意听到它。

如何使用passport-google-oauth成功validation后redirect到原始页面

我正在使用node passport-google-oauth模块,并尝试使用基于会话build议的Node.js Passport的Google策略中的自定义returnUrl成功进行身份validation后,将页面redirect回原始path。 但是,我发现在我的callback中,存储在会话中的redirect信息总是被删除,所以我被迫redirect到默认值(在这种情况下是“/”)。 这里是我的代码片段的日志输出。 看起来在callback中,returnTo被消灭了。 这是一个护照的devise谷歌oauth? 如果是这样,authentication成功后又怎么能redirect到原来的页面呢? //从输出 Storing url: /newroom in /auth/google, returnTo = /newroom in /auth/google/callback, returnTo = undefined Storing url: /newroom in /auth/google, returnTo = /newroom in /auth/google/callback, returnTo = undefined //代码片段 var express = require('express'), [sic] passport = require('passport'), GoogleStrategy = require('passport-google-oauth').OAuth2Strategy, cookieParser = require('cookie-parser'), expressSession = require('express-session'), bodyParser = […]