Articles of passport.js

PassportJS自定义validationcallback未调用

更新:下面的错误是由提交修复的。 我已经把第一个答案标记为“正确的”,尽pipe在其中一个评论中引起了我的注意 我希望利用自定义callback来处理loginPassport的身份validation本地策略的成功和失败,但它看起来只是成功调用。 这里是我正在谈论的一个片段: passport.use(new LocalStrategy( {usernameField: 'email', passwordField: 'password'}, function(email, password, done) { if(canLogin) done(null, user); else done({message: "This is an error message" }, false, { message: "Some Info" }); } )); app.post('/login', function(req, res, next) { passport.authenticate('local', function(err, user, info) { // Only called if err is not set }); 任何想法,为什么这可能是这样的? 我以为这个callback会被调用,所以我可以自己处理错误。

Node.js + Passport:done()方法中第三个参数'info'会发生什么?

我发现done()方法(或success() ,由我的debugging器告诉)有第三个参数以及称为info 。 谁能告诉我什么值得传递给它? 编辑 我所指的done()方法是我们必须在策略callback中调用的方法。 例如 var passport = require('passport') , LocalStrategy = require('passport-local').Strategy; passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username.' }); } if (!user.validPassword(password)) { return done(null, false, { message: […]

使用Facebook和Passportjs进行身份validation:什么是accessToken,注册后应该存储什么?

我正在使用Passport来注册/使用Facebook进行身份validation。 oAuth成功的时候,我回来了: accessToken refreshToken profile 现在…当用户成功注册使用Facebook,我存储accessToken和profile信息。 当有人想要login,并再次通过oauth动作,我的应用程序再次获取accessToken和profile 。 麻烦的是, accessToken是不同的。 我真的希望accessToken是第一次validation后是相同的… 在这一点上,我连接我自己的本地用户与configuration文件中的Facebook的id字段。 但是…我怎么实际上使用accessToken? 保持它是否有意义? 如果是这样,为什么我会保留它? 我实际上期望accessToken是相同的,并使用它来匹配成功的login。 我显然不能这样做…所以我很困惑!

PassportJS – 自定义callback并将Session设置为false

是否有可能使用自定义callback和禁用会话? 在文档中,它显示了如何禁用会话和自定义callback,但我如何将它们合并? app.get('/login', function(req, res, next) { passport.authenticate('local', function(err, user, info) { if (err) { return next(err); } if (!user) { return res.redirect('/login'); } req.logIn(user, function(err) { // I'm getting an error here // [Error: Failed to serialize user into session] if (err) { return next(err); } return res.redirect('/users/' + user.username); }); })(req, res, next); […]

Node.Js + express +护照:无法注销用户

我为Web服务器编写了一个JS脚本,其中包括使用护照和摘要策略的身份validation。 我不使用会话,但我已经尝试使用会话,它不会改变结果。 浏览器请求“/ login”路由并显示一个内置的login对话框。 validation工作正常,但我不能让用户“注销”。 问题似乎是浏览器记住login凭证并自动重新发送。 最终的结果是用户必须完全closures浏览器才能注销,但这对于此应用程序来说是一个问题。 我知道必须有办法告诉浏览器不要这样做,但我还没有弄明白。 我想出了一个破解让浏览器再次显示login对话框; 强制authentication函数返回false。 但是,我还没有想出一个方法来做到这一点每个会话。 现在,如果一个人注销,每个人都注销。 这不是一个可行的解决scheme。 有谁能告诉我我在做什么错在这里? 有一件事,我想知道的是,当我的浏览器发布到/ logout路由时,是否返回正确的响应(请参见结束)。 我返回res.json(“”),但也许有一个不同的响应,我应该发送告诉浏览器忘记会话的凭据? 我的代码如下。 任何有识之士都非常感激。 先谢谢你。 Ť var passport = require('passport'), DigestStrategy = require('passport-http').DigestStrategy; var express = require('express'); var app = express(); app.configure(function () { app.use( "/", //the URL throught which you want to access to you static content express.static('./www') //where […]

如何通过Passport / Facebook战略authenticationSupertest请求/?

我使用Passport.js进行身份validation(Facebook策略),并使用Mocha和Supertest进行testing。 我如何创build一个会话,并与Supertest Facebook的策略进行authentication的请求? 以下是用户未login时的示例testing: describe 'when user not logged in', -> describe 'POST /api/posts', -> it 'respond with 401', (done)-> request(app). post(API.url('posts')). set('Accept', 'application/json'). send(post: data). expect('Content-Type', /json/). expect(401, done) 谢谢你的build议:D

Passport.js github策略callback总是返回“TypeError:无法设置属性'用户'未定义的”

我一般都是新来的护照authentication,并且正在尝试使用github策略passport-github创build一个简单的Express应用程序。 我已经成功使用谷歌和叽叽喳喳策略下面的基本相同的代码,但每次我尝试合并github策略时,我得到一个500响应与此错误,每当我点击callback路线: 无法设置未定义的属性“用户” TypeError:无法设置未定义的属性'user' at /Users/dan/Repos/passport-github-portal/node_modules/passport-github/node_modules/passport-oauth/node_modules/passport/lib/passport/http/request.js:45:35 (/Users/dan/Repos/passport-github-portal/node_modules/passport/lib/authenticator.js:267:43) 在序列化(/ Users / pass / pass / passport / 在/Users/dan/Repos/passport-github-portal/app.js:49:7 (/Users/dan/Repos/passport-github-portal/node_modules/passport/lib/authenticator.js:284:9) 在Authenticator.serializeUser(/Users/dan/Repos/passport-github-portal/node_modules/passport/lib/authenticator.js:289:5) IncomingMessage.req.login.req.logIn(/Users/dan/Repos/passport-github-portal/node_modules/passport-github/node_modules/passport-oauth/node_modules/passport/lib/passport/http/request.js: 43:29) 在Strategy.strategy.success(/Users/dan/Repos/passport-github-portal/node_modules/passport/lib/middleware/authenticate.js:228:13) (/Users/dan/Repos/passport-github-portal/node_modules/passport-github/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth2.js:133:18) 在/Users/dan/Repos/passport-github-portal/app.js:25:9 我的app.js如下: var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var passport = require('passport'); var session […]

只允许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请求语法。 任何帮助将大规模赞赏。 谢谢。