Tag: passport.js

护照和智威汤逊

所以我设法让passport-twitter和jsonwebtoken库一起工作,但为了使它正常工作,我必须使用express-session作为中间件。 我不想添加会话,因为我使用jsonwebtoken来返回令牌。 这里是代码autheticate.js router.get('/twitter', function(req, res, next){ passport.authenticate('twitter', {session: false}, function(err, user, info){ if(err){ return next(err); } if(user){ var token = createToken(user); console.log(token); return res.json({token: token}); } else { return res.status(401).json(info); } })(req, res, next); }); 我已经添加了session:false作为参数,但是在server.js上,它一直在吐出错误,我需要使用express-session。 server.js var express = require('express'); var path = require('path'); var logger = require('morgan'); var bodyParser = require('body-parser'); var […]

如何在angular度客户端处理passport-facebookcallback?

我正在开发一个MEAN应用程序。 我正在使用护照进行身份validation – 本地,Facebook和谷歌战略。 我正在使用angularjs客户端。 所有的路由都在客户端处理。 我只使用服务器数据apis。 当使用passport-facebook策略时,我按照护照文档在节点服务器上使用下面的代码。 app.get('/auth/facebook',passport.authenticate('facebook-auth', { scope : ['email'] })); app.get('/auth/facebook/callback',passport.authenticate('facebook-auth', { successRedirect : '/home', failureRedirect : '/login', scope:['email'] })); 我面对的问题是当用户点击“使用Facebooklogin”button <a href="/auth/facebook" class="btn"><i class="fa fa-facebook"></i> Sign in using Facebook</a> 客户端将访问“/ auth / facebook”路线,最终将用户redirect到Facebook页面以validation用户的凭证。 validation成功后,用户将被redirect到按照“successRedirect”值定义的路由“/ home”。 现在的事情是,我想使用自定义callback函数,而不是定义成功或失败的redirect。 它将如下所示: app.get('/auth/facebook/callback',passport.authenticate('facebook-auth', function(err,user,info){ if(err){ throw err; } else if(user === 'userexists'){ res.json({ 'state':false, 'message':'User […]

如何传递一个额外的参数passport.authenticate

(我已经做了fbStrategy.passReqToCallback = true )我fbStrategy.passReqToCallback = true https://scotch.io/tutorials/easy-node-authentication-linking-all-accounts-together,但想要使用这个社交authentication服务的多个应用程序,前:控制加热系统,打开喷头等 基本上,如果这些应用程序之一检查服务器,并没有一个正确的令牌,它会被redirect到这个社会authentication服务(社会authentication)。 当用户按下社交loginbutton时,它抓取它到达的应用程序的参数,并将其添加为/auth/facebook/:appid // send to facebook to do the authentication app.get('/auth/facebook/:appId', function(req,res,next){ passport.authenticate( 'facebook', { scope : 'email' } )(req,res,next); }); req req,res,next是序列化的用户logging。 此时social-auth不知道用户是谁。 fbStrategy.passReqToCallback = true; passport.use(new FacebookStrategy(fbStrategy, function(req, token, refreshToken, profile, done) { var email = (profile.emails[0].value || '').toLowerCase() process.nextTick(function() {… 一旦授权完成,我想重新回到调用应用程序,我需要:appId参数骑,所以我可以回到正确的网站。 现在一般情况下,如果我只是把一个像currentAppId这样的variables用于各种社会状态,那么它就可以工作,但是如果你碰巧有多个人在同一时间进行身份validation,那么你可以想象有一个用户返回到错误的应用程序或其他用户的应用程序。 这就是为什么我需要appId作为参数passport.authenticate 。 我应该在哪里找出如何。 […]

我如何使用Passport.js返回到当前散列位置?

我使用Passport.js通过OAuth与Google进行身份validation(我正在使用passport-google-oauth策略)。 它工作正常,但我目前redirect到“/”,我想发送他们到“/”加上当前的哈希标签。 我可以在一个查询string参数中发送散列值,但我似乎无法将该值设置为我传递进行身份validation的对象的callbackURL属性。 有人可以提供一个例子或解释正确的方法来做到这一点? 我并不赞成使用查询string,它似乎是最直接的路线,但我打开使用会话variables或其他东西,如果这将是更容易或更好的做法。 谢谢。

Model.find()。toArray()声明不具有.toArray()方法

我对nodejs和mongodb非常陌生,并且试图拼凑我自己的博客应用程序。 我有一个问题,试图通过我的“博客”模式查询具有特定用户名的。 当我尝试跑步 var userBlogs = function(username) { ub = Blog.find({author: username}).toArray(); ub = ub.reverse(); }; 我得到一个错误。 TypeError: Object #<Query> has no method 'toArray' 我知道globals是坏的,但我一直在努力让它工作。 Mongo文档声明返回一个游标,它可以调用toArray()方法。 我不知道为什么它不起作用。 这是我的模式/模型创build: var blogSchema = mongoose.Schema({ title: {type:String, required: true}, author: String, content: {type:String, required: true}, timestamp: String }); var Blog = mongoose.model('Blog', blogSchema); 这里是/ login和/ readblog请求 app.get('/readblog', ensureAuthenticated, […]

如何使用koa通用会话()的护照?

我创build了一个使用本地身份validation策略的护照的Koa应用程序。 我想使用模块koa-generic-session,这样我就可以将会话数据存储在Redis中。 我如何使用这两个? 我发现这个回购这样做,但它似乎并没有真的使用会议,我不知道这是否是正确的: https : //github.com/dozoisch/koa-react-full-example

如何设置当前主机的Passport策略callbackURL?

我正在使用Passport with Express的Passport-Linkedin战略,允许用户使用他们的LinkedIn个人资料login。 我有以下代码: passport.use(new LinkedInStrategy({ consumerKey: config.linkedin.LINKEDIN_API_KEY, consumerSecret: config.linkedin.LINKEDIN_SECRET_KEY, callbackURL: "http://localhost:3000/auth/linkedin/callback" }, function(token, tokenSecret, profile, done) { // asynchronous verification, for effect… process.nextTick(function () { // To keep the example simple, the user's LinkedIn profile is returned to // represent the logged-in user. In a typical application, you would want // to associate the […]

无法使用node.jsvalidation移动客户端(使用passport.js)

我试图build立一个CRUD应用程序与node.js作为后端API(快递)和networking应用程序(骨干)和移动客户端(原生android)作为前端(我是node.js初学者) 我的服务器解决scheme基于以下伟大教程“easy-node-authentication” 。 在我的Android应用程序中,我使用Google Plus SDK完成了身份validation步骤(移动到google-plus直接请求)后,设法获得了用户Google-Token。 我试图理解和find正确和优雅的方式来重新使用给定的谷歌令牌,并通过谷歌加帐户再次authentication我的Android用户,以确保移动客户端持有真正的令牌,然后添加一个新的条目(ID,令牌,电子邮件,名称)我的用户表DB在我的节点后端。 问题是:如果我想保持我的后端没有改变,我的下一步应该是什么? 我应该发送带有令牌的GET请求作为cookie到/ auth / google吗? 也许到/ auth /谷歌/callback? 另一个URL? 这是否有意义呢? 请注意:我知道上面提到的'easy-node-auth'解决scheme是基于会话和cookie的。 说,我仍然试图了解是否有一个方便的方式来整合(Android和节点),因为它适用于我的networking应用程序和节点。

护照不保持持久login会话

我首先看护照,mongodb和快递持续会议,但没有帮助或没有意义。 我正在尝试持续login我的网站 。 我的序列化过程不起作用。 // Passport needs to be able to serialize and deserialize users to support persistent login sessions passport.serializeUser(function(user, done) { console.log('serializing user:',user.username); //return the unique id for the user return done(null, user._id); }); //Desieralize user will call with the unique id provided by serializeuser passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { console.log('deserializing […]

Passport.js – 浏览器GET请求是好的,但来自JS代码的AJAX请求不是?

我已经在Node.js服务器上configuration了Passport,并主要使用Twitter身份validation策略。 我最近发现一个似乎表明使用浏览器URL(使用Web浏览器search栏)的GET请求似乎与来自应用程序代码内部的AJAX请求不同的身份validation,这让我感到困惑。 例如,如果我使用Passportlogin,则可以通过将浏览器指向直接向后端服务器发送请求的某些URL来访问所有内容。 但是,Angular或jQuery对后端API的任何请求似乎都是未经授权的。 这可能是完全正确的吗? 如果是这样,Passport如何知道浏览器请求和JS代码中的AJAX请求之间的区别?