Articles of passport.js

PassportJS:BasicStrategy vs LocalStrategy?

看着许多PassportJS的例子,我对使用BasicStrategy感到困惑。 有些人使用它进行用户名/密码authentication,其他用户使用clientID / clientSecretauthentication,而有些人完全不使用LocalStrategy。 BasicStrategy的正确目的是什么? 不应该只使用ClientPasswordStrategy来通过ID /密钥来validation客户端吗?

NodeJS Passport TypeError:undefined不是一个函数

我正在使用护照模块node.js,我收到以下错误: TypeError: undefined is not a function at module.exports (C:\cygwin64\home\Home\gethweb\routes\index.js:21:33) at Layer.handle [as handle_request] (C:\cygwin64\home\Home\gethweb\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C:\cygwin64\home\Home\gethweb\node_modules\express\lib\router\index.js:312:13) at C:\cygwin64\home\Home\gethweb\node_modules\express\lib\router\index.js:280:7 at Function.process_params (C:\cygwin64\home\Home\gethweb\node_modules\express\lib\router\index.js:330:12) at next (C:\cygwin64\home\Home\gethweb\node_modules\express\lib\router\index.js:271:10) at C:\cygwin64\home\Home\gethweb\node_modules\connect-flash\lib\flash.js:21:5 at Layer.handle [as handle_request] (C:\cygwin64\home\Home\gethweb\node_modules\express\lib\router\layer.js:95:5) at trim_prefix (C:\cygwin64\home\Home\gethweb\node_modules\express\lib\router\index.js:312:13) at C:\cygwin64\home\Home\gethweb\node_modules\express\lib\router\index.js:280:7 at Function.process_params (C:\cygwin64\home\Home\gethweb\node_modules\express\lib\router\index.js:330:12) at next (C:\cygwin64\home\Home\gethweb\node_modules\express\lib\router\index.js:271:10) at SessionStrategy.strategy.pass (C:\cygwin64\home\Home\gethweb\node_modules\passport\lib\middleware\authenticate.js:318:9) at SessionStrategy.authenticate (C:\cygwin64\home\Home\gethweb\node_modules\passport\lib\strategies\session.js:67:10) at attempt (C:\cygwin64\home\Home\gethweb\node_modules\passport\lib\middleware\authenticate.js:341:16) at authenticate […]

护照 – 错误:发送后无法设置标题

我知道这个问题的变化已经被多次提出。 我的理解是,你基本上必须看你的if / else逻辑,并确保done不被多次调用。 Twitter和谷歌工作正常。 Facebook虽然给我这个错误: Error: Can't set headers after they are sent. at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11) at ServerResponse.header (/Users/azerner/code/mean-starter/node_modules/express/lib/response.js:718:10) at ServerResponse.location (/Users/azerner/code/mean-starter/node_modules/express/lib/response.js:835:8) at ServerResponse.redirect (/Users/azerner/code/mean-starter/node_modules/express/lib/response.js:874:8) at complete (/Users/azerner/code/mean-starter/node_modules/passport/lib/middleware/authenticate.js:241:26) at /Users/azerner/code/mean-starter/node_modules/passport/lib/middleware/authenticate.js:250:15 at pass (/Users/azerner/code/mean-starter/node_modules/passport/lib/authenticator.js:427:14) at Authenticator.transformAuthInfo (/Users/azerner/code/mean-starter/node_modules/passport/lib/authenticator.js:449:5) at /Users/azerner/code/mean-starter/node_modules/passport/lib/middleware/authenticate.js:247:22 at /Users/azerner/code/mean-starter/node_modules/passport/lib/http/request.js:51:7 at pass (/Users/azerner/code/mean-starter/node_modules/passport/lib/authenticator.js:273:43) at serialized (/Users/azerner/code/mean-starter/node_modules/passport/lib/authenticator.js:282:7) at /Users/azerner/code/mean-starter/server/passport.js:17:5 at pass (/Users/azerner/code/mean-starter/node_modules/passport/lib/authenticator.js:290:9) at Authenticator.serializeUser (/Users/azerner/code/mean-starter/node_modules/passport/lib/authenticator.js:295:5) […]

会话使用护照在node.js中失效

评估nodejs的护照; 我的理解是反序列化用户将被使用中间件调用每个请求,并且通常会为该用户发出数据库请求。 这几乎让我想起了一个投票请求。 为什么用户更新方法不会简单地使单个会话无效,在当时单独触发新的读取,假设没有大批量用户修改或频繁的用户更改? 它会不会显着减less阅读交换一大堆的更新?

Passport.jsvalidation总是失败

我的护照中间件不起作用。 当我在路由上调用passport.authenticate()以确认用户已通过身份validation时,我被redirect到失败页面。 但是,login路由按预期工作,并且我被成功redirect到正确的页面,在那里调用失败中间件redirect,并将其发送回login页面。 我有这样一个Passport战略: module.exports = function(){ var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy var User = require('../models/user'); // used to serialize the user for the session passport.serializeUser(function(user, done) { done(null, user.id); }); // used to deserialize the user passport.deserializeUser(function(id, done) { User.getUserById(id, function(err, user) { done(err, user); }); }); passport.use(new LocalStrategy({ usernameField: "email", […]

使用护照和谷歌API进行身份validation的问题 – InternalOAuthError正在发生

所以,我在使用Google身份validation和护照时遇到了一些问题。 我正在使用这些configuration: “护照”:“^ 0.2.2” “passport-google-oauth2”:“^ 0.1.6” 还有,我在console.developers.google中configuration了oAuth ID: 我用于本地主机服务器的第一个configuration,工作正常 第二个configuration我正在使用特定的服务器,但不工作。 我可以看到谷歌页面,select并注册用户,但是当收到callback方法( http:// [服务器]:[端口] / ?代码= […] )发生错误( InternalOAuthError ) 。 这里是日志: InternalOAuthError: Failed to obtain access token at Strategy.OAuth2Strategy._createOAuthError ([…]/server/node_modules/passport-google-oauth2/node_modules/passport-oauth2/lib/strategy.js:348:17) at […]/server/node_modules/passport-google-oauth2/node_modules/passport-oauth2/lib/strategy.js:171:43 at […]/server/node_modules/passport-google-oauth2/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:177:18 at ClientRequest.<anonymous> ([…]/server/node_modules/passport-google-oauth2/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:148:5) at ClientRequest.emit (events.js:107:17) at TLSSocket.socketErrorListener (_http_client.js:271:9) at TLSSocket.emit (events.js:129:20) at net.js:459:14 at process._tickDomainCallback (node.js:381:11) 我想知道是否有人有同样的问题。

如何使用护照记住我与用户数据库

过去几天我一直在努力让护照记住我,并在我正在开发的一个节点js应用程序中运行。 我的护照本地策略(与护照本地mongoose工作)一直工作正常,但试图纳入记忆function被certificate是一个噩梦(由于我自己的无知)。 我花了最近几天的search,但我还没有find一个例子,使用护照,记住,我的战略,与护照本地和护照,本地,mongoose同时存储在数据库中的数据。 这里提供的例子使用一个虚假的数据库的令牌和用户(内存中/在服务器上),但我想知道我应该如何连接起来,以便我可以使用实际的mongodb数据库。 所以,我的基本问题是:如何修改上面链接的现有示例代码,以便用户和令牌存储在/从mongodb数据库中检索? 目的是在使用护照本地mongoose,护照本地和护照记住我时,而不是写定制策略或中间件。

从Express响应(渲染)发送道具给ReactJs

我有一个简单的应用程序与node.js , 快递 , 护照和react-js 。 我有一个包含client.js的index.html ,它是react-js的一个简单呈现: var React = require('react'); var React = require('react-dom'); var Client = require('./Client.jsx'); ReactDOM.render( React.createElement(Client, null), document.getElementById('main') ); Client是真正的应用程序。 在服务器端( routes.js )我有这个:app.get('/ login',function(req,res){res.render('login');}); app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }),function(req, res){}); app.get('/auth/google/callback',passport.authenticate('google', { failureRedirect: '/login' }), function(req, res) { res.redirect('/'); }); app.get('/', ensureAuthenticated ,function(req, res){ req.session.id = req.user._id; […]

ValidationError:validation失败mongoose

你好,我正在尝试连接Node.js与Facebook。 我正在关注这个博客条目。 有人能帮我吗? 我得到这个错误: ValidationError:Validation failed at model.Document.invalidate(/Users/me/node_modules/mongoose/lib/document.js:1009:32)at /Users/me/node_modules/mongoose/lib/document.js:958:16 atvalidation(/Users/me/node_modules/mongoose/lib/schematype.js:610:7)在/Users/me/node_modules/mongoose/lib/schematype.js:627:9在Array.forEach(本地)在SchemaString。 SchemaType.doValidate(/Users/me/node_modules/mongoose/lib/schematype.js:614:19)at /Users/me/node_modules/mongoose/lib/document.js:956:9 at doNTCallback0(node.js:419 :9)at process._tickCallback(node.js:348:13) var FacebookStrategy = require('passport-facebook').Strategy; var BearerStrategy = require('passport-http-bearer').Strategy; var passport = require('passport'); var mongoose = require('mongoose'); var ObjectId = require('mongoose').Types.ObjectId; // Mongoose connection to MongoDB (ted/ted is readonly) mongoose.connect('mongodb://localhost/testDB', function(error) { if (error) { console.log(error); } }); var userSchema […]

如何使用客户端模板的护照js?

我正在使用护照js来处理一些身份validation。 不过,我也使用angular度$路线服务来处理我的模板在客户端。 因此,我不确定如何继续使用护照,因为doc页面上的示例假设服务器端模板。 例如, app.post('/login', passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login', failureFlash: true }) ); 所以基于此,“/”和“/ login”似乎是为模板提供服务,而不仅仅是对REST式查询的响应。 我正在做的事情,我的模板发生在客户端。 在我的angular度文件,设置一切 $routeProvider .when('/', { templateUrl: 'templates/login.html', controller: 'MainCtrl' }) .when('/home', { templateUrl: 'templates/home.html', controller: 'MainCtrl' }); 看来我正在努力混搭,而不是真正理解任何一种做事的方法。 所以我知道我可能已经把这个可怕的措辞说到目前为止,但是我想要做的就是这样的事情 html(login.html) <h3> Login </h3> <form action= "login" method="post"> Username:<br> <input type="text" name="username" value=""> <br> Password:<br> <input type="password" name="password" value=""> […]