Articles of passport.js

Passportjs文档 – function的意义

在这个Passportjs.org页面上,文档给出了一个使用LocalStrategy的例子,在LocalStrategy中它调用一个函数: User.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username.' }); } if (!user.validPassword(password)) { return done(null, false, { message: 'Incorrect password.' }); } return done(null, user); }); 现在,我看到这个“ User ”对象出现在多个地方,例如passport-windowsauth策略的文档,在这个例子中使用了以下函数: User.findOrCreate() 所以现在我想知道我是否疯了。 这个'用户'对象和它的function是一些现有的框架或function集,或者这些只是你自己的寻找用户的本土function的例子吗?

在nodejs中使用twitter oauth时,无法获得/ auth / twitter / callback

我正在尝试使用passportjs在nodejs中执行twitter oauth,但却出现错误 Cannot GET /auth/twitter/callback?oauth_token=alksdkalsjdsjd23232378skjdfjsdhf&oauth_verifier=234jjh23j4k234k23h4j2h342k34hj 这是我的节点js代码 var express = require('express') , passport = require('passport') , util = require('util') , GoogleStrategy = require('passport-google').Strategy , TwitterStrategy = require('passport-twitter').Strategy; passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(obj, done) { done(null, obj); }); passport.use(new TwitterStrategy({ consumerKey: 'xxxxxxxxxxxxxxxxxxxx', consumerSecret: 'xxxxxxxxxxxxxxxxxxxxxxxxxx', callbackURL: 'http://127.0.0.1:3000/auth/twitter/callback' }, function(token, tokenSecret, profile, done) { process.nextTick(function () { […]

Node.js Express Passport.js – 数据不会序列化

/** * Module dependencies. */ var express = require('express'); var routes = require('./routes'); var login = require('./routes/login'); var register = require('./routes/register'); var http = require('http'); var path = require('path'); var MongoClient = require('mongodb'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var app = express(); // all environments app.set('port', process.env.PORT || 3001); app.set('views', path.join(__dirname, 'views')); […]

PassportJS – GET请求中的login凭据?

我正在开发一个REST风格的Web应用程序。 我希望通过POST请求(请求正文中的用户名和密码)进行用户注册 ,并通过GET请求(查询中的用户名和密码)进行用户注册 。 PassportJS文档似乎表明,Passport希望凭证位于请求主体(它parsing的)中。 我不太明白它如何处理GET请求,因为他们没有机构(通常,如果我理解正确的话)。 我将如何做这项工作? 这是一个坏主意吗? 如果是的话,有没有一个RESTful的select?

Passportjs BearerStrategy与OAuth2Strategy

我正在尝试使用passportjs来进行身份validation的oauth2客户端。 在Passportjs中有2个策略突出,BearerStrategy和OAuth2Strategy。 有什么不同?

在“www”子域中使用Reddit OAuthvalidation问题

我现在已经为我的Node应用程序设置了Reddit授权,就像本例中一样 。 我有在Reddit设置callbackurlhttp://example.com/auth/reddit/callback的应用程序,一切都很好。 用户可以inputhttp://example.com/auth/reddit并login,一切都很好。 用户尝试通过http://www.example.com/login时出现问题。 看起来,Reddit的CSRF保护将这些请求视为一个问题。 按照这个例子: /** * Authentication route */ app.get('/auth/reddit', function(req, res, next) { var n = crypto.randomBytes(32).toString('hex'); req.session.state = n; passport.authenticate('reddit', { state : n, duration : 'permanent' })(req, res, next); }); /** * Authentication callback */ app.get('/auth/reddit/callback', function(req, res, next) { // Check for origin via state token if (req.query.state […]

雅虎OpenID返回无效签名与护照 – 雅虎

截至今天,2013年12月10日,似乎passport-yahoo无法正确完成openid工作stream程。 我们正在得到一个无效的签名。 我对openid的知识是相当有限的,而且我仍然在研究这个问题。 任何人都可以提供一些洞察这个问题? 其他人是否也遇到同样的问题? 这是来自节点的堆栈跟踪: { "message":"Failed to verify assertion", "stack":"Failed to verify assertion (message: Invalid signature) at app/node_modules/passport-yahoo/node_modules/passport-openid/lib/passport-openid/strategy.js:184:36 at app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:1063:12 at app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:1188:14 at app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:1269:7 at Object.openid.loadAssociation (app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:107:5) at _checkSignatureUsingAssociation (app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:1231:10) at _checkSignature (app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:1221:5) at _verifyAssertionAgainstProvider (app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:1184:3) at app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:1155:16 at app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:678:7 at app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:533:11 at done (app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:254:9) at IncomingMessage.<anonymous> (app/node_modules/passport-yahoo/node_modules/passport-openid/node_modules/openid/openid.js:258:32) at IncomingMessage.EventEmitter.emit (events.js:117:20) at _stream_readable.js:920:16 […]

使用MEAN +护照更改基于用户angular色的视图

我正在使用MEAN堆栈和PassportJS设置一个authenticationscheme,通过一个OpenID提供者来authentication一个用户。 当用户未通过身份validation时,我会显示一个将用户redirect到OpenID提供程序的链接。 validation后,我想用“Welcome {user}”的行代替链接。 目前,我能够执行身份validation并存储返回的标识符,如下所示: passport.serializeUser(function(user, done) { done(null, user.identifier); }); passport.deserializeUser(function(id, done) { User.findByIdAndUpdate(id, {}, { upsert: true }, function(err, user) { done(err, user); }); }); (我是否正确地执行序列化和反序列化函数?) 由此,用户标识被存储为一个cookie,也被作为数据库中的一个键。 现在在我的客户端代码中,根据用户是否经过身份validation,更改视图(login – >欢迎文本)的最佳方式是什么?

Node.js passport-saml一直redirect到localhost:3000 / login / callback

我正在使用来自www.npmjs.org/package/passport-saml的SAML教程。 我是SAML的初学者。 教程说 SAML身份提供商会将您redirect到pathconfiguration提供的URL 我已经有一个OpenIdp帐户。 似乎我可以成功login,但redirectURL总是把我发送到localhost:3000 / login / callback ,因为我把'path'改为'/ users / login-user-db-saml'或' www.passporttoken.com:1234/users/login-user-db-saml' (两者都不起作用,仍然将我发送到默认login/回叫 )。 我有下面的代码。 我做错了什么? /**start FOR SAML**/ passport.use(new SamlStrategy( { path: '/users/login-user-db-saml', entryPoint: 'https://openidp.feide.no/simplesaml/saml2/idp/SSOService.php', issuer: 'passport-saml' }, function(profile, done) { findByEmail(profile.email, function(err, user) { if (err) { return done(err); } return done(null, user); }); }) ); app.post('/users/login-user-db-sam', passport.authenticate('saml', { failureRedirect: […]

护照会话不会在浏览器closures时被破坏

我有一个Node.js服务器,我正在使用护照进行会话pipe理。 计划使用它来实现记住我很快的服务器function。 但我有一个问题,正常会议基本上就是记住我。 又名会话cookie connect.sid在浏览器closures时不会被破坏,我相信这不是正确的行为。 我正在使用connect-bluesky作为会话存储(使用azure色表格)和couchbase来存储默认会话信息以供将来使用。 相关代码: Server.js app.configure(function() { app.use(express.logger('dev')); // log every request to the console // set up our express application app.use(express.cookieParser()); app.use(express.json()) .use(express.urlencoded()); app.use(express.static(__dirname)); var db = new couchbase.Connection({host: 'http://localhost:8091', bucket: 'default'}, function (err){ console.log("In cb connect"); console.log(err); }); app.use(express.session({secret: 'SECRET', store: new BlueskyStore({ account: 'ACCOUNT', key: 'KEY', table: 'sessionsTable', cookie: […]