Articles of passport.js

只允许passportjsauthentication的用户访问受保护的页面

将此代码放置在足以保护未经身份validation的用户访问的路由中? if (!req.user) return res.send(401, "Not allowed in");

如何在loginpassportjs后设置会话超时?

我想在使用passportjslogin后设置会话超时。 如何使用passportjs设置会话的maxAge。 passportjs提供的会话的默认最大使用期限是多less?

IOS Facebookauthentication使用node.js passport-facebook-token

我正在尝试使用IOS应用程序中的passport-facebook-token对node.js api进行身份validation。 我有用户名和密码validation设置,并通过护照和护照,脸谱令牌设置按照例子正常工作。 passport.use(new FacebookTokenStrategy({ clientID: config.facebook.clientID, clientSecret: config.facebook.clientSecret }, function(accessToken, refreshToken, profile, done) { User.findOrCreate({ facebookId: profile.id }, function (err, user) { return done(err, user); }); 我只是不能找出将访问令牌发送到API所需的HTTP请求语法。 任何帮助将大规模赞赏。 谢谢。

Node.js Passport策略使用电子邮件或用户名login

我正在使用护照在我的node.js应用程序,我目前正在使用用户名login。 在我的用户注册页面上,我允许用户注册其唯一的用户名和电子邮件。 我想要一个login页面,并使用“使用用户名/电子邮件login:” _ __ _ __ _ _ 脚本可以检测字段中是否有“@”,并查找电子邮件而不是用户名。 我已经尝试了几个小时无济于事。 这是我的passport.js var mongoose = require('mongoose') var LocalStrategy = require('passport-local').Strategy var User = mongoose.model('User'); module.exports = function(passport, config){ passport.serializeUser(function(user, done){ done(null, user.id); }) passport.deserializeUser(function(id, done) { User.findOne({ _id: id }, function (err, user) { done(err, user); }); }); passport.use(new LocalStrategy({ usernameField: 'username', passwordField: 'password' }, […]

基本示例中护照authentication失败

我正试图将这个passport.js例子分解为它最基本的元素。 我一直得到401(未经授权)的消息,不知道为什么。 任何帮助将不胜感激。 谢谢! Node.js文件: var http = require('http'), express = require('express'), passport = require('passport'), LocalStrategy = require('passport-local').Strategy, flash = require('connect-flash'); var port = process.env.PORT || 8080; passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(obj, done) { done(null, obj); }); passport.use(new LocalStrategy( function(username, password, done) { console.log("LocalStrategy working…"); return done(null, { id: 1, username: 'Joe', password: […]

无法使用Passport.js和Express 4访问req.user

我一直在用Passport,Express 4和Jade创build应用程序。 我想向用户显示当他们login时更改的导航栏。 但是,我无法访问除configuration文件页面之外的任何其他页面的req.user,该页面调用isLoggedIn: function isLoggedIn(req, res, next) { // if user is authenticated in the session, carry on if (req.isAuthenticated()) return next() // if they aren't redirect them to the home page res.redirect("/login") } 使用任何其他函数在未login时不redirect用户将导致req.user undefined 。 我得到这样的用户: router.get("/profile", isLoggedIn, function(req, res) { res.render("profile", { title: 'Gebruikersprofiel van ' + req.user.firstname + " " […]

为什么connect-mongo为每个请求创build新的会话?

我有两个nodejs服务器(networking服务器,套接字服务器),通过socket.io互相连接。 在Web服务上,我使用express.js和passport.js作为身份validation中间件。 这是我的networking服务器configuration: var express = require('express'), mongo = require('mongodb'), io = require('socket.io'), passport = require('passport'), LocalStrategy = require('passport-local').Strategy, MongoStore = require('connect-mongo')(express); app.configure(function () { app.use(express.cookieParser()); app.use(express.methodOverride()); app.use(express.bodyParser()); app.use(express.session({ secret: 'keyboard cat', store: new MongoStore({ db: 'MyDatabase' }) })); app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); app.use(express.static(__dirname + '/htdocs')); }); 当我使用connect-mongo时,它为每个http请求创build一个新的会话。 这个元素创buildlogin请求: { "_id" : "UCnXade6Bk6ofOZ+jiEgzyH8", "session" : "{\"cookie\":{\"originalMaxAge\":31536000000,\"expires\":\"2014-03-07T13:07:45.703Z\",\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":\"50cae08806e31ea2e5634e3f\"}}", […]

在node.js中,为什么护照会话在触发'文件'事件时停止强大?

在我的应用程序,我只使用 app.use(express.json()); app.use(express.urlencoded()); 并不是 app.use(express.bodyParser()); 这样我可以手动parsingfile upload。 看来,这一行 app.use(passport.session()); 停止从触发文件事件强大: form.on('file', function(name, file) { //never called }); 我怎样才能使用护照会议,而不是与强大的文件事件冲突?

Passport.jsvalidation不起作用

我正尝试第一次设置护照,只用一个谷歌login选项。 我注册与谷歌apis所以我有所有的设置。 相关代码在下面,但是当我的应用程序进行'/auth/google/'调用时,它只是失败,没有响应或错误消息。 我已经调整了一些configuration的方式无济于事。 我也用console.logreplace了passport.authenticate('google')和一个匿名函数来仔细检查我的Web服务是否正常运行。 所以我知道它正在passport.authenticate('google') 。 // serialize session passport.serializeUser(function (user, done) { done(null, user.id); }); passport.deserializeUser(function (obj, done) { done(null, obj); }); // use google strategy passport.use(new googleStrategy({ clientID: config.google.clientID, clientSecret: config.google.clientSecret, callbackURL: config.google.callbackURL, scope: 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile' }, function(accessToken, refreshToken, profile, done) { console.log(profile); } )); app.use(passport.initialize()); app.use(passport.session()); app.get('/auth/google', passport.authenticate('google')); app.get('/auth/google/callback', passport.authenticate('google', […]

“这是不允许的,需要预检的错误”在护照Facebooklogin错误的交叉来源?

我有一个node.js快递应用程序,它提供了RESTful API,我使用的是用于Facebook身份validation的护照。 我启用了服务器端的所有CORSconfiguration,并能够通过jQuery Ajax使用API​​。 但是对于Facebook身份validation,我收到以下错误: XMLHttpRequest cannot load http://localhost:3000/auth/facebook. The request was redirected to 'https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http%…_me%2Cuser_checkins%2Cuser_likes&client_id=12345678&type=web_server', which is disallowed for cross-origin requests that require preflight. / auth / facebook端点是这个。 app.get('/auth/facebook', passport.authenticate('facebook', { scope: ['email', 'user_about_me', 'user_checkins', 'user_likes'], failureRedirect: users.authFailCallback }), users.signin); 所以基本上它被redirect到Facebook的API(302),它不允许CORS。 有什么办法可以解决这个问题吗? 或者我需要从服务器端本身调用Facebook API?