Tag: passport.js

Node / Express JS身份validation:除了Passport JS以外还有其他什么?

我通常使用Javascript(JQuery)客户端制作网站,并使用PHP + MySQL服务器端进行用户authentication,在线订购系统等。 我一直在学习node / express,socket.io,mongoDB / mongoose和护照几个月,并且正在考虑用它们来替代PHP + MySQL服务器端,让我的网站更实时/互动。 我的网站的用户是技术精明的,所以浏览器的兼容性不是一个问题。 Passport是节点/快递的唯一生产级本地authentication系统吗? (通过mongoDB在本地存储在我的服务器上的用户名/密码)

如何访问passport.deserializeUser中的node-orm2 Express中间件

我使用Passport进行身份validation,并与node-orm2一起使用。 护照要求您注册函数以序列化和反序列化会话中的用户。 我的用户存储在我通过node-orm2的Express中间件访问的数据库中。 orm2中间件将其模型标记在req对象上以便于访问。 不幸的是,Passport不提供对deserializeUser中的req对象的访问。 我已经遇到了这个解决scheme ,但我希望有更好的东西: var User; passport.use({ passReqToCallback: true }, new LocalStrategy(function (request, username, password, done) { if (!User) { User = request.models.User; } User .find({ username: username }) .limit(1) .run(function (err, users) { var user = users[0]; if (err) { done(err); } else if (!hasher.verify(password, user.password)) { done(null, false); } else […]

如何阅读PassportJS会话数据?

我认为我不太明白passport.session是什么意思。 它在configuration页面上没有说什么。 我需要的是保存一个人的数据,一旦他的身份validation,然后使用他的名字在另一个需要的文件,我把我所有的Socket.io代码。 我在Google上阅读过这么多,而且找不到我需要的东西。 一旦用户login,我不知道如何读取具有该数据的connect.sess 。 那么这条线是做什么的? app.use(passport.session()); 注 – 我不使用数据库。 用户只需login即可获得他的ID和姓名,这是非常基本的。

用NodeJS检索远程文件进行存储?

我有NodeJS restify安装程序,我正在使用mongoose附件将图像附加到我的用户模型,并将图像存储在S3存储桶中。 我还允许用户使用Passport.JS使用Facebook,Google等进行注册。 问题是mongoose-attachments在调用.attach()函数时需要本地文件引用,PassportJS提供了一个远程URL – 所以我需要下载图像,然后从tmp附加它。 我应该如何用NodeJS来解决这个问题? 有没有一个好的模块,我可以用这个?

表示authentication中间件在PUT请求后无法正确redirect

我正在使用下面的中间件passportjs。 假设用户在请求某些事情时是否login。 如果他没有login,他应该被redirect到login页面。 我有一个请求路由如下: app.put('/fantasyteams/:fantasyTeamId', auth.requiresLogin, fantasyteams.update); 当用户尝试更新网站中名为“幻想团队”的资源时,将会调用此路线 auth.requiresLogin是一个中间件,如下所示: exports.requiresLogin = function (req, res, next) { if (req.isAuthenticated()) { return next() } return res.redirect("/signin"); }; login我的用户后,我通过删除会话cookie来模拟会话过期。 此后,我通过网站做了一个PUT'/ fantasyteams / 123'的更新幻想团队号码123。 fantasyteams.update只是一个mongodb / mongoose保存操作: exports.update = function(req, res){ var fantasyteam = req.fantasyteam; fantasyteam = _.extend(fantasyteam, req.body); fantasyteam.save(function(err){ res.jsonp(fantasyteam); }); }; 正如所料,上面的路由处理程序(app.put …)抓住了请求,将它传递给auth.requiresLogin中间件来检查用户是否login。因此,事实certificate,用户没有login,因为我删除他的会话cookie。 按预期调用res.redirect。 但是,该网站不会redirect到login页面。 我在node.js命令日志中看到了这一点: PUT […]

Passport.js表示意见

我正在使用护照和一些静态的.html文件。 我想包括他们作为明确的意见或静态文件。 现在我希望像login.html这样的一些.html文件可供所有人使用,但其他视图文件如secret.html应该需要护照。 我知道,你可以为路由使用app.get('somePath', ensureAuthenticated, function (req, res, next) {} ,但我希望它用于静态文件 。 如何做到这一点不hacky的方式?

检测提供商注销passport.js?

我知道web应用程序通常不会将其会话绑定到其login提供程序的会话,但是我有一个要求,即当用户login其login提供程序时需要检测,以便我们可以从应用程序中签出以及。 我目前在我的Node.js服务器上设置了护照。 login很容易实现,它一直工作正常,但我一直没能find提供者的轮询当前用户会话状态的文档。 护照是否提供检查这种状态的手段? 再次调用authenticate路由总是做一个redirect,所以我正在寻找一个简单和ajax友好的方式来得到是或否的答案的问题:'用户仍然有一个有效的会议在他们的login提供者的结束? 谢谢

Passport.js LocalStrategy逻辑

我想了解LocalStrategy如何工作。 这是我的服务器文件的一部分: var passport = require('passport'); var express = require('express'); /* other initializations */ var app = express(); passport.use = new LocalStrategy( function(email, password, done) { module.exports.findByUsername(email, function(err, user){ if (err) throw err; if(!user) { done(null, false, { message: 'Incorrect username.' }); } else if(user.password != password) { done(null, false, { message: 'Incorrect password.' }); […]

用于多策略sigup用户表的架构

在一个项目上工作时,面临不同的护照策略(本地,脸谱,微博)存储用户信息的问题。 在开始我的UserSchema有这样的样子: User = mongoose.Schema( { "email" : { type : String , lowercase: true , trim : true , unique : true } , "providerId" : { type : String } , "providerName" : { type : String } , "hashedPassword" : { type : String } , "salt" : { type : String […]

由于“AuthorizationError”,未能从passport-facebook发现服务器错误

我遇到了一些与passport-facebook和nodejs / express有关的问题。 成功login处理得很好。 但是,由于某种原因,当一个FB连接login失败时,我的应用程序会抛出一个服务器错误,这个错误不会被捕获,并返回状态500.我相信我使用了一个相当标准的护照configuration,所以我有点卡住了成为问题。 在这种情况下,为了创build一个错误,我从另一个应用程序的testing用户login到我的沙盒应用程序。 错误/堆栈跟踪表示错误是在我没有触及的模块代码中: 在Strategy.OAut2(/用户/用户名/Sites/node_projects/applicationname/node_modules/passport-facebook/lib/strategy.js:84:41)(/Users/username/Sites/node_projects/applicationname/node_modules/passport/lib/passport/middleware/authenticate.js (/ Users / username / Sites / node_projects)上的Passport.authenticate(/Users/username/Sites/node_projects/applicationname/node_modules/passport/lib/passport/middleware/authenticate.js:244:7) /applicationname/node_modules/express/lib/router/index.js:164:37)param(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:138:11)at在Router._dispatch(/ Users / username / Sites / node_projects)传递(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:145:5) /applicationname/node_modules/express/lib/router/index.js:173:5)在Object.router(/Users/username/Sites/node_projects/applicationname/node_modules/express/lib/router/index.js:33:10 )(/Users/username/Sites/node_projects/applicationname/node_modules/express/node_modules/connect/lib/proto.js:193:15) 这是非常标准的路线: app.get('/auth/facebook/callback', passport.authenticate('facebook', { successRedirect: '/#', failureRedirect: '/#login' })); req.query是 {"error_code":"2102","error_message":"User is not a test user owned by the application"} 在阅读了这个固定的问题之后( https://github.com/jaredhanson/passport-oauth/issues/16 ),我添加了中间件,以便req.query是: {"error_code":"2102","error_message":"User is not a test user […]