Articles of passport.js

Passport-Local Mongoose – 更改密码?

我使用Passport-Local Mongoose来encryption帐户的密码。 但我不知道如何更改密码。 任何人都知道该怎么办? TKS

如何用护照快递保护静态文件夹

我有一个快速的基于护照的需要authentication的项目。 后台是一个angularjs应用程序作为静态文件。 我的身份validation代码完全基于https://github.com/jaredhanson/passport-local/blob/master/examples/express3-no-connect-flash/app.js 如果您未通过身份validation,请不要使用angular度应用程序。 我已经尝试通过在/ admin路由添加ensureAuthenticated,但它使路由不工作(404)。 一旦我删除ensureAuthenticated /pipe理服务。 app.use(express.static(path.join(__dirname, 'public'))); app.use('/admin', ensureAuthenticated, express.static(path.join(__dirname, 'admin'))); //serve routes app.use(app.router); 公用文件夹包含login页面。 我怎么能做到这一点?

即使在范围内,Passport-Facebook也不提供电子邮件

在我的应用程序中,我注册了facebook-strategie如下:但是返回的configuration文件不包含电子邮件字段…. passport.use(new FacebookStrategy({ clientID: config.facebook.clientID, clientSecret: config.facebook.clientSecret, callbackURL: config.facebook.callbackURL, passReqToCallback: true }, function(req, accessToken, refreshToken, profile, done) { // No email in the following colsole.log console.log(JSON.stringify(profile)); })); 得到如下: app.get('/oauth/facebook', passport.authenticate('facebook', { failureRedirect: '/login', scope:['email'] })); (所以我使用范围如这里所说: Passport-Facebook不会收到电子邮件 ) 在FBlogin页面我甚至要求电子邮件,我确实提供: 任何帮助非常appriciated!

套接字的身份validation方法

我试图通过sailsjs和passport获得身份validation工作。 这个挑战似乎是套接字连接没有会话,sailsjs嘲笑请求对象,导致它没有设置Passport中间件。 这导致nodejs抛出一个错误,说req对象没有一个叫做logIn的方法。 所以,我试着按照@xdissent在这里提供的代码片断: 通过websockets进行Sails.js + Passport.jsauthentication,这确实可以让我login而不会抛出错误。 或者呢? 事实certificate,它做了什么 ,但我不知道是什么。 因为通过不同的(套接字)请求获取req.user ,我得到一个空的对象返回。 我也看了redis。 这出来了: redis 127.0.0.1:6379> keys * 1) "waterline:broadcasting:_sequences:id" 2) "sess:aDJI0YHzh17E3AMjtKsZSijs" redis 127.0.0.1:6379> get "sess:aDJI0YHzh17E3AMjtKsZSijs" "{\"cookie\":{\"httpOnly\":true,\"path\":\"/\"}}" redis 127.0.0.1:6379> 所以有一个会话,只是没有用户存储在它。 所以长话短说,我如何获得护照和sailsjs发挥好套接字。 更新 :我想了解一些关于会话,套接字和一般的风帆的信息。 所以,如果我在一个会话中设置东西,并刷新浏览器,我希望它仍然在那里。 如果我在与套接字连接相同的页面上进行xhr调用,不应该是相同的会话吗?

在会话中更新login的用户详细信息

ExpressJS使用PassportJS。 我需要更新login的用户的详细信息。 虽然我在数据库中进行更新,但是如何在会话中更新它,以便request.user包含更新的用户详细信息? 也就是说,在更新数据库之后,如何更新用户的会话信息呢? 我试着直接分配更新的细节request.user但它没有工作。 然后我尝试request.session.passport.user – 这工作,但有一个约5至10秒的延迟之前,它在request.user更新。 是否有我需要调用的函数更新会话中存储的用户信息? 还是有一些其他的对象,我可以更新的地方没有延迟的变化

错误:未能在会话中find请求令牌

我在主要的护照回购中发现了一些问题,但是,我认为这主要与这个特定的策略有关,因为我能够使用护照 – 谷歌 – 奥法策略成功validation身份。 Error: failed to find request token in session at Strategy.OAuthStrategy.authenticate (/home/glug/application/node_modules/passport-dropbox/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth.js:124:54) at attempt (/home/glug/application/node_modules/passport/lib/passport/middleware/authenticate.js:243:16) at Passport.authenticate (/home/glug/application/node_modules/passport/lib/passport/middleware/authenticate.js:244:7) at callbacks (/home/glug/application/node_modules/express/lib/router/index.js:161:37) at param (/home/glug/application/node_modules/express/lib/router/index.js:135:11) at pass (/home/glug/application/node_modules/express/lib/router/index.js:142:5) at Router._dispatch (/home/glug/application/node_modules/express/lib/router/index.js:170:5) at Object.router (/home/glug/application/node_modules/express/lib/router/index.js:33:10) at Context.next (/home/glug/application/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Context.actions.pass (/home/glug/application/node_modules/passport/lib/passport/context/http/actions.js:77:8) 我使用redis作为会话存储,但是,即使在消除之后,它仍然失败,出现相同的错误消息。 var DropboxStrategy = require('passport-dropbox').Strategy; app.configure(function(){ app.set('port', config.express.port); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); […]

Passport.js:passport-facebook-token策略,通过JS SDKlogin,然后validation护照?

我正在寻找一种方法让我的客户端与Facebook的JS SDK授权,然后以某种方式将此授权转移到我的节点服务器(所以它可以validation与fbgraphicsAPI的请求) 我偶然发现: https : //github.com/jaredhanson/passport-facebook/issues/26 & https://github.com/drudge/passport-facebook-token 护照-Facebook似乎是一个完全不同的策略。 当我假设: 一个使用fb JS SDKlogin,然后facebook-token策略以某种方式从文档或正文对象中提取令牌和fb id? 或者有没有其他体面的方式来实现这一目标? 我试图避免由服务器SDK强制实施的redirect

使用callback链接创buildFacebook应用程序

我正在创build一个Facebook应用程序。 我想让用户使用它login到我的网站(使用passportjs)。 但要做到这一点,我需要给callbackurl(我的网站url)。 但我无法在Facebook应用程序创build页面中find该字段。 我错过了什么吗? 我已经search了很长时间了。

PassportJS:如何在我的意见中得到req.user

我使用Express 2.x和会话存储使用pssportjs。 login后,我得到req.User只有一次。 只要我redirectreq.User是不确定的。 这是我的configuration: passport.serializeUser(function(user, done) { done(null, user._id); }); passport.deserializeUser(function(userId, done) { User.findOne({_id: userId} ,function(err, user){ done(err, user); }); }); // Authentication Strategy passport.use(new FacebookStrategy({ clientID: CONFIG.fb.appId, clientSecret: CONFIG.fb.appSecret, callbackURL: CONFIG.fb.callbackURL }, function(accessToken, refreshToken, profile, done) { // asynchronous verification, for effect… process.nextTick(function () { User.findOne({ 'accounts.uid': profile.id, 'accounts.provider': 'facebook' }, function(err, olduser) […]

使用passport.js和express.js(node.js)创build安全的oauth API

我想我有一个特定的问题,除非我没有以正确的方式做事。 我有一个双方的应用程序,一个客户端(html网站),和一个API(使用express + mongodb构build)。 该API将需要安全访问。 他们都在不同的领域,现在让我们说我的网站是在domain.com上,我的API是在api.com:3000。 我已经添加了护照从Github获取访问令牌,因为我使用他们的数据创build了我的用户,所以我可以基本上有一个“用Githublogin”。 我目前的过程是: 1)客户端(站点),在API上打开一个popup窗口 window.open("http://api.com:3000/oauth") 2)快递服务器,启动护照stream程: app.get('/oauth', passport.authenticate('github'), function(req, res) { }); 对于这个策略,我使用了这个代码 。 3)我将callbackredirect到一个url,closurespopup窗口(JavaScript与window.close()): app.get('/oauth/callback', passport.authenticate('github', { failureRedirect: '/' }), function(req, res) { res.redirect('/auth_close'); }); 在这一点上,一切都很好,我现在login在API中。 我的问题是如何将数据返回给客户端,因为客户端还不了解accessToken,用户或用户ID。 所以,从客户端(打开popup窗口的网站),我尝试了不同的方法: 从popup窗口中获取值:由于redirect而不工作,我失去了popup式JavaScript信息的轨道 调用我的API来获取会话中的“当前用户”,如http://api.com:3000/current另外一个请求,并不理想,但是这个工作。 但是,我仍然有一个问题。 如果我从浏览器到达它,这个/当前url正在返回用户,因为浏览器在头部请求中发送快速会话cookie: Cookie:connect.sid=s%3AmDrM5MRA34UuNZqiL%2BV7TMv6.Paw6O%2BtnxQRo0vYNKrher026CIAnNsHn4OJdptb8KqE 问题是我需要从jquery或类似的请求,这是失败的地方,因为会议不发送。 所以用户不会被返回: app.get('/current', function() { // PROBLEM HERE, req.user is undefined with ajax calls because of […]