Tag: passport.js

Passport.js,Express.js和Angular.js路由:它们如何共存?

我很抱歉这个问题有点长,但是我已经研究了一段时间,真的需要解释所有的故事。 背景 :基于MEAN堆栈的应用程序,试图使用Passport.js来授权 Facebooklogin。 Passport.js 指南后,我实现了类似于: // HTML <a href="/connect/facebook" target="_self">Add a Facebook login</a> // send to facebook to do the authentication app.get('/connect/facebook',isLoggedIn, passport.authorize('facebook', { scope : 'email' }) ); // handle the callback after facebook has authorized the user app.get('/connect/facebook/callback', passport.authorize('facebook', { successRedirect : '/profile', failureRedirect : '/profile' })); 注意html中的target=_self以跳过Angular路由。 显然,授权工作正常。 但是,redirect不起作用,因为路由由Angular处理。 授权后,我从来没有登陆/profile (但在默认的Angular路线)。 […]

用户没有定义:Nodejs / Express + Passport

我的问题是非常相似的这个问题,但答案似乎不适用于我(我看到,用户从来没有select一个答案也)。 我有一个全新的Nodejs和Express安装。 我的设置: app.use(express.static(path.join(__dirname, 'public'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser('hithere')); app.use(session({ secret: 'hithere', resave: false, saveUninitialized: true })); app.use(passport.initialize()); app.use(passport.session()); passport.serializeUser(function(user, done) { console.log('Serialize user called.'); return done(null, user); }); passport.deserializeUser(function(id, done) { console.log('Deserialize user called.'); return done(null, user); }); passport.use(new LocalStrategy( function(username, password, done) { console.log('local strategy called with: %s', username); return […]

Passport.js策略,不需要字段

我很惊讶,很难find,或者可能是我的错。 我需要一个不需要字段的passport.js strategy – 通过简单的用户GET请求来运行身份validation,然后操作用户会话数据,例如创build一个新的“访客”用户。 也许我可以通过护照local-strategy做到这一点? 或者我需要创build一个自定义的? 我看到这个configuration护照接受请求没有身体? 问题,但我只是无法弄清楚如何在答案包装build议会改变任何东西。 编辑:这是我想要实现的 passport.use('guest', new LocalStrategy({ passReqToCallback: true }, function (req, NOusername, NOpassword, done) { ////NO PASSWORD OR USERNAME checks here, just deciding what kind of temporary user needs to be created/// if (req.session.passport) { ///create new user with previous session data done(null,user) } else { ///create clean […]

基准express.jslogin会话

我有一个node.js后端,这是一个安静的API端点。 我可以使用wrk来testinghttp GET,POST,PUT请求。 我也可以使用pm2模块来跟踪CPU和内存的使用情况。 但是,我如何模拟多个login会话? 我想testinglogging会话的内存使用情况,并找出1GB RAM有多less用户可以build立与服务器的login会话。 (我假设当我看到pm2内存占用率达到100%,而pm2高延迟时间,这是我的服务器可以使用的最大会话连接数)而且我在正确的轨道上? ps:我用passport.js来处理login。

nodejs:找不到模块“护照”

我在探索Node.js的开始时错过了相当基本的东西。 我正在尝试使用passportjs身份validation来构build一个小应用程序。 我在我的app.ts有以下行: import passport = require("passport"); 和下面的我的package.json: { "name": "ftct", "version": "0.0.0", "description": "ftct", "main": "app.js", "author": { "name": "Mark.Norgate", "email": "" }, "dependencies": { "express": "3.4.4", "jade": "*", "passport": "^0.3.2", "stylus": "*" } } 但是,Visual Studio 2015抱怨: Build: Cannot find module 'passport'. 我错过了什么? 我已经阅读了一些关于passportjs的文档,但是到目前为止还没有看到什么问题。

护照Saml循环

我试图在nodejs / angularjs项目中使用Passport-Saml.js进行ADFS身份validation。 当我连接到我的网站时,我被正确地redirect到我的ADFS门户。 ADFS门户,authentication后正确redirect到callback。 然后是callback循环。 Chrome控制台正在循环播放 那我的路线(server.js): app.post('/login/callback', function (req, res, next) { console.log('before'); passport.authenticate('saml', function (err, user, info){ console.log('good'); })(req, res, next); }); 我认为它在passport.authenticate('saml',function(err,user,info)停止工作(因为在输出消息之前可以在控制台中看到,但是在屏幕截图中看不到“好” 和我的护照configuration(/config/passport.js): var fs = require('fs') , passport = require('passport') , SamlStrategy = require('passport-saml').Strategy ; passport.serializeUser(function (user, done) { done(null, user); }); passport.deserializeUser(function (user, done) { done(null, user); }); passport.use(new […]

如何使用护照和快递显示自定义错误消息

我在注册用户时检查电子邮件是否已经存在。 如果用户已经存在,我会传递错误消息“email already exists”。 但在前端显示“未经授权”错误401.我想通过从后端传递到前端的错误消息,但它通过默认消息。 下面是我如何检查用户是否已经存在并发送错误信息, exports.register = new LocalStrategy({ usernameField: 'email', passReqToCallback: true }, function(req, email, password, done,res) { var newUser = new User({ email: email, password: password, name: req.body.fname }); var searchUser = { email: email }; User.findOne(searchUser, function(err, user) { if (err) return done(err); console.log("err "+err); if (user) { return done(null, false, […]

使用passport-local和bcrypt在node.js中检查和更新密码

当我尝试在我的节点应用程序中validation用户的现有密码时,出现[Error: data and hash arguments required]错误。 上下文是我要求我的用户在用户configuration文件页面中更改之前validation其现有的密码。 我的堆栈是node + mondodb(通过mongoose)使用passport-local与bcrypt。 相关的代码是: // code trying to match that returns the aforementioned error req.user.comparePassword(req.body.password, function (err, isMatch) { if (err) { return console.error(err); } if (isMatch) { console.log('passwords match'); // now save new password // Password verification userSchema.methods.comparePassword = function (candidatePassword, cb) { bcrypt.compare(candidatePassword, this.password, function (err, […]

在服务器重新启动期间保持护照会话不变

有没有办法,我可以维护重新启动服务器上的用户会话,以帮助保持我的发展又好又快? 我正在本机上运行ExpressJS节点项目。 我正在使用Grunt-nodemon来观看我的JS文件,并且一旦我做了修改就重新启动服务器。 这意味着什么,我的项目(有用户login)的任何会话都擦干净。 目前,如果我在某个深层页面并重新启动,我将被踢出到login页面,必须重新导航,这是非常令人沮丧的。 我使用护照作为会话中间件。 我使用mongoose作为我的主要应用程序数据存储,如果我可以使用它,那将是超级的。

在响应后访问Supertest中的“req”对象

在testing请求的同时/之后,有没有什么方法可以直接访问supertest对象中的req对象? 我想testing我的passport策略,所以我想检查req.user , req.session ,也许还有其他的。 我知道我可以testing页面redirect或闪光,因为这些都是我的策略所做的,但看起来req对象上是否有用户似乎也很有用。 如果我这样做,我也可以检查一次有多less用户。 我将使用“本地注册”策略来签署用户,因此定义如下: 'use strict'; // get passport & mongoose var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var UserModel = require('mongoose').model('User'); module.exports = function() { // signup function passport.use('local-signup', new LocalStrategy({ passReqToCallback: true // pass the entire request to the callback }, function(req, username, password, done) { process.nextTick(function() { […]