Tag: passport.js

避免在Node.js单身?

我已经多次读过,应该尽可能地避免单身。 通过单身我的意思是这种types的代码 exports = module.exports = new Passport(); 这段代码来自Node.js模块PassportJS。 它允许我们使用护照,并添加一些将在我们的整个代码中共享的var。 所以,你可以看到我们可以做这个代码: https : //github.com/ragulka/sails-starter-app/blob/master/api/controllers/SessionController.js (这只是一个例子,我也是,我也是怪没人)。 请注意,他正在使用require的文件顶部的护照,然后使用之前在代码中添加的策略之一。 显然这很方便,但这是做到这一点的最好方法吗? 有没有办法从先前的代码中的控制器内传递护照variables? 让我知道如果有什么不清楚。 提前致谢。

问题与护照叽叽喳喳战略

我有一个应用程序,我已经与Koa节点写了。 我正在使用护照进行身份validation,Twitter的oauth护照叽叽喳喳,和koa护照,使其与科阿工作。 直到最近,与login的一切都完美。 我开始吸引朋友们对github的一些兴趣,当我试图让新人们关注这个项目时,人们开始有问题无法login并得到这个消息: 哇! 这个页面没有请求令牌。 这是我们需要使用您的Twitter帐户的应用程序的特殊关键。 请回到发送给您的网站或应用程序,然后重试。 这可能只是一个错误。 奇怪的是,我的生产服务器是最新的存储库,并在那里login工作得很好。 我的两台本地机器上的login也同样适用。 当我完全从我的笔记本电脑中删除项目,然后再次将其删除,它也开始有这个问题。 这是我的auth.js中的代码 var passport = require('koa-passport'); var settings = require('./settings'); var Promise = require('../plugins/base/common').Promise; var config = require('../config.json'); passport.serializeUser(function(user, done) { done(null, user) }) passport.deserializeUser(function(user, done) { done(null, user) }) if (process.env.NODE_ENV == "production"){ var domainStr = "http://productionurl.com"; }else{ var domainStr = "http://127.0.0.1:3000"; } […]

jsonwebtoken不会过期

我为node.js使用了jsonwebtoken包: 像这样创build令牌: var token = jwt.sign(user, tokenSecret, {expiresInMinutes: 1}); validation是这样的: jwt.verify(token, tokenSecret, function(err, decoded) { if(err) return done(new Error('Invalid authentication!')); if(!decoded) return done(null, false); return done(null, decoded, { scope: 'all'}); }); 但是我的令牌永远不会过期(我在“请求”之间等了几分钟)。

Passport.js记得我的function

https://github.com/jaredhanson/passport-remember-me passport.use(new RememberMeStrategy( function(token, done) { Token.consume(token, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false); } return done(null, user); }); }, function(user, done) { var token = utils.generateToken(64); Token.save(token, { userId: user.id }, function(err) { if (err) { return done(err); } return done(null, token); }); } )); […]

电子邮件字段在passportjs facebook策略中是可选的

我写了Facebook的login代码,一切正常,我得到用户的电子邮件地址。 但在Facebook上有另一个选项,让用户select我的应用程序将有权访问的数据。 如果用户点击它,他会看到名称和所有需要标记的内容,但是电子邮件是可选的,用户可以将其从要提供给应用程序的数据中移除。 在应用程序上,电子邮件是必需的。 那么如何在Facebook上标记电子邮件? 这是我在代码中使用的代码片段。 passport.use(new FacebookStrategy({ clientID: config.social.facebook.clientID, clientSecret: config.social.facebook.clientSecret, callbackURL: config.url+'auth/facebook/cb', enableProof: false, profileFields:['id', 'name', 'emails'], scope: "email" }, function(accessToken, refreshToken, profile, done) { // doing the rest of the thing } )); // … app.get('/auth/facebook', passport.authenticate('facebook', {scope: ['email']})); app.get('/auth/facebook/cb', passport.authenticate('facebook'), function(req, res, next) { res.redirect("/"); });

在React(ES6)中访问护照的req.user? API调用返回req.user未定义

我正在使用使用Passport进行身份validation的React Starter Kit制作应用程序。 我现在正在尝试在前端访问req.user对象的阶段,但是我无法将req.user对象传递到React / ES6环境。 我试图把这个东西作为一个prop和context来使用,但都无济于事。 此时,我决定创build一个API端点,在那里我可以将req.user的值作为JSON返回,但req.user被返回为undefined ,尽pipe在get('*')下工作正常。 这是我所做的GET调用,即返回undefined : server.get('/user', (req, res) => { console.info('user: ', req.user); }); 而 server.get('*', async (req, res, next) => { console.info('*: ', req.user); // … the rest of the React Starter Kit rendering code 确实会返回req.user的对象,这让我感到困惑。 护照会限制在某些网站吗? 中间件: server.use(express.static(path.join(__dirname, 'public'))); server.use(cookieParser()); server.use(session({ secret: 'keyboard cat', cookie: { httpOnly: […]

如何在单个快递服务器文件中使用两个单独的护照实例

我有一个快速的应用程序与用户和pipe理部分。 两者都将运行在不同的端口上,需要不同的authentication。 我创build了一个app.js,其中包括护照,并创build一个应用程序以及adminApp。 然后我为两者初始化护照如下: var passport = require('passport'); var app = express(); var adminapp = express(); adminapp.use(passport.initialize()); adminapp.use(passport.session()); app.use(passport.initialize()); app.use(passport.session()); 现在我有定义的路由来侦听/ auth和处理身份validation。 由于我在不同的端口上运行这些端口,因此我有相同的路由模式,并且都在端口上正确监听。 所以可以说我有一个userSessions.js和adminSessions.js文件来处理authentication路线。 这些包括如下: var userSessions = require('./routes/userSessions'); var adminSessions = require('./routes/adminSessions'); app.use('/auth', userSessions); adminapp.use('/auth', adminSessions); 现在,如果我尝试在pipe理应用程序上进行身份validation,它仍会转到userSessions.js的passport.serializeUser和passport.deSerializeUser方法。 我如何处理这种情况,以便pipe理员和用户身份validation分开处理? 或者我这样做是错误的方式和pipe理部分应该在完全不同的应用程序处理?

用Mocha和ChaitestingExpress和护照OAuth2

我有一个使用Express和Passport的应用程序。 我正在使用Passport的Google OAuth2策略。 我有几条路线需要通过这个策略login。 目前我正在使用Mocha和Chai进行集成testing,但是我不确定如何绕过或使用某些路由所需的OAuth2身份validation。 例如,这是我的一个testing: it("should list a single item on /items/<id> GET", function(done) { chai.request(server) .get('/items/' + id) .end(function(err, res) { res.should.have.status(200); res.should.be.json; res.body.should.be.a('object'); res.body.should.have.property('description'); done(); }); }); 我的路线为/items/:id router.get('/items/:id', auth.isLoggedIn, function(req, res) { var item = getItem(); res.json(item); }); /items/:id需要login。 有没有办法绕过logintesting,或嘲笑一个用户,我的集成testing将工作?

在passport.js中的Date.now无法完成

当我在我的nodejs网站上通过facebook创build用户时,我想分配registerdate。 我正在使用护照。 如果我使用本地提供程序,则可以在我的Mongoose模式中使用 regisDate: { type:Date, 'default': Date.now }, 然而在护照脸书这是我的代码: function(accessToken, refreshToken, profile, done) { User.findOne({'facebook.id': profile.id}).exec() .then(user => { if (user) { return done(null, user); } user = new User({ firstName: profile.first_name, lastName: profile.last_name, address: '', regisDate: Date.now, birthday: profile.birthday, email: profile.emails[0].value, role: 'user', provider: 'facebook', facebook: profile._json }); user.save() .then(user => done(null, user)) […]

Passport-github js,用户代理错误

昨天我可以通过Passport.js和Passport-github模块成功login我的应用程序,今天我收到了这样一个错误: 500 failed to fetch user profile (status: 403 data: {"message":"Missing or invalid User Agent string. See http://developer.github.com/v3/#user-agent-required"}) 所以其他人得到它? gihub oauth政策是否改变? 我们需要在passport-github / node-oauth模块上做出贡献吗?