Articles of passport.js

Sails.js 0.11和护照:“Missing Credentials”错误

我已经按照这个网站的教程: http : //iliketomatoes.com/implement-passport-js-authentication-with-sails-js-0-10-2/ registry单工作正常,一切都保存到我的数据库(MongoDB),但是当我想login时,我有missing credentials错误: { "message": "Missing credentials", "user": false } 这很奇怪,我已经克隆了https://github.com/iliketomatoes/passport_with_sails , sails lift它,一切工作正常。 我已经将所有api源文件和configuration复制到我的项目中。 只有意见是不同的,但我敢肯定,我使用的input名称: email和password 。 而我仍然有这个错误。 我正在使用MongoDB作为数据库,我切换到本地磁盘(如在这个回购),仍然是同样的问题。 我已经将package.json文件中的npm模块的版本更改为repo版本,并且仍然是相同的错误。 它很奇怪。 另外我不得不提到POST请求包含email和password字段。 我已经仔细检查过了 有人知道什么会导致这个问题? 编辑:我的login.ejs视图看起来像这样: <div class="row"> <div id="content" class="col-sm-12 full"> <div class="row"> <div class="login-box"> <div class="header"> Login to JSCS Dashboard </div> <form class="form-horizontal login" action="/login" method="POST"> <fieldset class="col-sm-12"> <div class="form-group"> […]

validationcaptcha以及passport.js

是否有可能在调用passport.jsvalidationfunction之前validationgoogle recaptcha是否成功? 我之间select一个或另一个之间卡住,因为都使用asynchronouscallback来validation,我不能在他们之间相互。 function verifyRecaptcha(key, rq, rs, pa, callback) { https.get('https://www.google.com/recaptcha/api/siteverify?secret=' + SECRET + '&response=' + key, function (res) { var data = ''; res.on('data', function (chunk) { data += chunk.toString(); }); res.on('end', function () { try { var parsedData = JSON.parse(data); // return true; callback(parsedData.success, rq, rs, pa); } catch (e) { // return […]

护照与404失败 – 为GitHub InternalOAuthError为什么?

我有与Google和Facebook合作的护照。 我试图添加Github来添加这些凭据,所以我可以做有效的Github API调用。 所以我简单地添加了我用Google或Facebook凭证login的相同模式。 但是在authcallback发生在Github之后,我在代码的中间看到了InternalOAuthError。 这几乎发生在最后一行:'return done(null,user.userData);' 叫做。 尝试debugging干扰callback。 所以我希望有一个更清晰的护照可以解释我做错了什么。 真奇怪的是,我已经从github收到用户configuration文件,并以“user.update(db)”存储在我的数据库中,就像我用google做的一样。 然后,当我试图通过调用done(…)来返回时发生崩溃。 我需要在github上添加一些东西给我的个人资料吗? 或者是其他东西? 或者这是因为我早已使用护照更早login使用谷歌凭据。 请注意,对于Google或Facebook,我指定了会话:false。 我已经用“passport-github”和“passport-github2”来尝试这个了。 清晰的代码是: index.js var express = require('express'); var passport = require('passport'); var auth = require('../auth.service'); var router = express.Router(); router .get('/:user', passport.authenticate('github', { failureRedirect: '/signup', session: false })) .get('/callback', passport.authenticate('github', { failureRedirect: '/signup', session: true }), auth.setTokenCookie); module.exports = […]

在post API中redirect错误

我正在使用node.js restify和passport模块,restify-ensure-login模块执行用户loginauthenticationfunction。 https://www.npmjs.com/package/restify-ensure-login 这里是相关的代码; var passport = require('passport'); var Strategy = require('passport-local').Strategy; passport.use(new Strategy( function(username, password, cb) { db.users.findByUsername(username, function(err, user) { if (err) { return cb(err); } if (!user) { return cb(null, false); } if (user.password != password) { return cb(null, false); } return cb(null, user); }); })); passport.serializeUser(function(user, cb) { cb(null, user.id); }); […]

在路由之间传递对象(护照)

想想我要做的事情应该是相对容易的,但是我放弃了这个线索,并且有潜力去做这件事。 使用节点设置节点应用程序并快速4.我使用护照进行身份validation。 跟着一个绝对惊人的指导scott.io很好地https://scotch.io/tutorials/easy-node-authentication-setup-and-local 这是一种魅力。 不过,我想分开我的路线,因为我喜欢保持整洁(这是一个谎言,但我打算保持谎言的生活)。 我的计划是有四套路线。 api(映射到/ api,使用文件./routes/api.js)索引(映射到/,使用文件./routes/index.js)auth(映射到/ auth,跟踪所有身份validation,callback为以及一些激活和其他位) 现在我的问题,我需要使护照可用的应用程序(或获得api.js和indes.js能够调用passport.js函数),我不能完全弄清楚如何。 我的计划是像这样发起护照: var passport = require('passport'); app.use(session({secret: 'Not-telling-you)', saveUninitialized: true, resave: true })); // session secret app.use(passport.initialize()); app.use(passport.session()); // persistent login sessions app.use(flash()); // use connect-flash for flash messages stored in session //Configuring the passports require('./config/passport')(passport); 这应该给我护照在应用程序中可用 接下来加载路由模块 var auth = require('./routes/auth')(app, passport); var users = […]

了解PassportJS中的完成function

我正在尝试实现一个正常的login和注册模块,我很难理解done函数。 这里是我感觉负责完成function的行。 现在我想要做的就是返回相应的消息,如有一些服务器错误。 app.post('/user/auth/login', passport.authenticate('local-login'), function(req, res) { console.log("Login Request Successful"); if(req.user){ res.status(200).send(JSON.stringify({ 'msg' : "Successfully logged in" })); } else{ res.status(400) } //console.log(req.user); }); 这是在loginPassport后将用户对象附加到请求模块的情况。 但是,如何区分服务器错误和身份validation失败错误 这是我的身份validation中间件。 passport.use('local-login', new LocalStrategy({ passReqToCallback: true }, function(req, username, password, done) { Users.findOne({ 'emailId': username }, function(err, user) { if (err) return done(err); if (!user) return done(null, false); […]

passport.authenticate不是一个函数

你好,我在NodeJs是新的,我一直在遵循这个教程http://code.tutsplus.com/tutorials/authenticating-nodejs-applications-with-passport–cms-21619创build一个应用程序进行身份validation。 我试图按照教程(代码是在github https://github.com/tutsplus/passport-mongo )所有的结构和代码,但是当我在浏览器中打开我的应用程序,我得到错误这个错误 TypeError:passport.authenticate不是module.exports的函数(C:\ myApp \ routes \ index.js:24:34) 这是我的index.js路由文件 var express = require('express'); var router = express.Router(); var passport = require('passport'); var isAuthenticated = function (req, res, next) { // if user is authenticated in the session, call the next() to call the next request handler // Passport adds this method to request […]

PassportJS + RestAPI + SPA

我使用ExpressJS来构buildRestAPI,客户端是SPA,并且通过PassportJS支持通过Google / FaceBook / GitHub / …进行身份validation。 我的问题,从社交logincallback将返回到RestAPI或SPA? 如果系统返回到RestAPI,那么如何将redirect到SPA上的主页。 另一种情况是,如果系统callbackSPA,RestAPI如何从客户端接收和validation令牌。 请让我知道常用的方法。 谢谢,

有关如何passport.js工作的问题。 具体关于user.id

我的model , doc或record没有id字段,或者您想要调用它的任何内容。 那么怎么done(null, user.id)作品。 我有一个_id但没有id 。 它看起来像一个护照对象被添加到我的会话与用户在数据库中的_id ,但它是如何得到_id是自动完成的? 在文档中说 在这个例子中,只有用户ID被序列化到会话中 它是如何得到的ID和它是如何得到用户? 我的代码中有类似的例子: passport.serializeUser(function(user, done){ done(null, user.id) }); passport.deserializeUser(function(id, done){ User.findById(id, function(err, user){ done(err, user); }) }); 获取用户ID需要哪些步骤? 我也有 passport.use("login", 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 : "no User has that name"}) } ……. 我使用passport.use()以某种方式将DB的用户连接到护照方法。 […]

快速护照会议不起作用

我正在构build一个Node应用程序,在这个应用程序中用户必须注册或login,然后当他们拖放一些元素(前端全部正常工作)时,我在数据库上存储他们的行为以及相应的userId。 我的理解是,一旦他们注册/login,我可以使用req.user来访问他们的ID并正确地存储他们的行动,但它不工作。 这是我的server.js文件中处理Passport的部分。 另外,我使用Sequelize作为ORM,但是所有处理数据库的东西在没有req.user部分的情况下都是完美的。 app.use(cookieParser()); app.use(bodyParser.json()); app.use(passport.initialize()); app.use(passport.session()); /****** Passport functions ******/ passport.serializeUser(function (user, done) { console.log('serialized'); done(null, user.idUser); }); passport.deserializeUser(function (id, done) { console.log("start of deserialize"); db.user.findOne( { where : { idUser : id } } ).success(function (user) { console.log("deserialize"); console.log(user); done(null, user); }).error(function (err) { done(err, null); }); }); //Facebook passport.use(new FacebookStrategy({ //Information […]