Articles of passport.js

服务器重新启动后,通过身份validation的用户login

我有一个节点应用程序,每当我编辑/更新.js文件,用户注销。 我正在用express.io使用passport-local 。 另外我使用mongoose和socket.io 。 app.configure(function() { app.use(express.logger('dev')); app.use(express.cookieParser()); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); app.set('view engine', 'ejs'); app.use(express.session({ key: 'session', secret: '111' })); app.use(passport.initialize()); app.use(passport.session()); app.use(flash()); }); 如何让用户永远login? 解决 : NodeJS + Express + Mongo Session存储

转发PassportJS到表单身份validation添加电子邮件,密码等

所以我按照这个教程 。 我完成了整个系列,应用程序工作正常。 不过,我想为使用社交networking注册的用户例如。 Facebook等被redirect到一个单独的表格,他们可以填写他们的名字(S)电子邮件等问题的夫妇。 我将不得不改变数据库模式,以允许“全球”(这是正确的术语来使用?)值的电子邮件和名称等从facebook / twitter特定的东西。 像这样: var userSchema = mongoose.Schema({ email : String, name : String password : String, facebook : { id : String, token : String, }, twitter : { id : String, token : String, displayName : String, username : String, }, google : { id : String, token […]

Passportjs处理HTTP API的访客authentication

这是我的代码: passport = require 'passport' BasicStrategy = require('passport-http').BasicStrategy passport.use new BasicStrategy((username, pwd, done) -> console.log arguments if pwd is "1234" and username is "Foo" done undefined, { username: "Foo" role: "admin" } else done() ) express = require("express") app = express() app.use express.logger() app.use passport.initialize() app.use passport.authenticate("basic", session: false) app.get '/', (req, res) -> res.send […]

用require导入连接angular色对象

我正在用nodejs和expressjs构build一个应用程序。 对于身份validation和用户angular色,我分别使用passport和connect-roles。 我已经build立了connect-roles对象,如下所示: https : //github.com/ForbesLindesay/connect-roles 像这样: var user = new ConnectRoles() 这是在我的app.js. 然后我导出这样的对象,如下所示: exports.user = user; 但是,如果我需要导入这个对象,我会看到一个奇怪的行为,请检查下面的代码: var express = require('express'); var router = express.Router(); var user = require('../app.js'); //1 console.log(user); /* GET users listing. */ router.get('/', function(req, res) { //2 console.log(user); res.send('respond with a resource'); }); module.exports = router; 情况1中的对象是未定义的,而情况2中的情况应该是这样。基本上,我得到2个不同的对象,这取决于我在router.get函数内部还是外部。 我已经debugging了半天,但我无法弄清楚发生了什么。 问题是应该注入这个对象来提供angular色pipe理,如下所示: router.get('/', […]

req.isAuthenticated()在服务器启动一段时间后返回false

我在节点js routes.js.中实现了以下function。在任何请求被首先服务之前,检查isAuthenticated。 function isLoggedIn(req, res, next) { if (req.isAuthenticated()) { console.log('Session Expiry '+req.session.cookie.expires); console.log('Authenticated'); return next(); } console.log('Not Authenticated'); res.redirect('/'); } 但是,当我打开页面一段时间后刷新或导航到其他页面时,它会转到索引页面,而不是当前页面。我发现这是因为req.isAuthenticated()在页面加载一段时间后计算为false。 为什么会变成错误? 是不是因为序列化不当? 这是我的序列化和deserilize方法,我是否正确地做, passport.serializeUser(function (user, done) { console.log('Serializing User'); done(null, user.id); }); // used to deserialize the user passport.deserializeUser(function (id, done) { console.log('Calling Deserlize'); dbconn.user_findById(id, function (err, user) {//call to query DB console.log('Deserializing […]

节点不能调用未定义的方法'serializeUser'

我使用Passport与Googlebuild立authentication系统。 我正在学习这个教程。 但是,在我的passport.js文件中,我一直得到这个错误: D:\Programming\weebly-site\config\passport.js:11 passport.serializeUser(function(user, done){ ^ TypeError: Cannot call method 'serializeUser' of undefined at module.exports (D:\Programming\weebly-site\config\passport.js:11:11) at Object.<anonymous> (D:\Programming\weebly-site\routes\admin.js:9:46) at Object.<anonymous> (D:\Programming\weebly-site\routes\admin.js:39:4) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (D:\Programming\weebly-site\app.js:18:19) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load […]

Google加用户年龄范围使用passport.js

我使用Jared Hanson的OAuthStrategy2( https://github.com/jaredhanson/passport-google-oauth )使用passportjs。 我想获得用户年龄范围在configuration文件对象,但我无法得到它。 即使我在范围内使用https://www.googleapis.com/auth/plus.login,Google保证也会返回年龄范围。 有没有办法通过护照获得这个信息,或者我会被迫做REST请求到谷歌过去的护照? 这是护照与我使用的范围进行身份validation: app.get('/auth/login/google', passport.authenticate('google', { scope: ['https://www.googleapis.com/auth/plus.login', 'https://www.googleapis.com/auth/userinfo.email' ] }), function(req, res) {}); 这是我得到的结果: { provider: 'google', id: '115346138147341087148', displayName: 'Testing Account', name: { familyName: 'Account', givenName: 'Testing' }, emails: [ { value: undefined } ], _raw: '{\n "id": "115346138147341087148",\n "name": "Testing Account",\n "given_name": "Testing",\n "family_name": "Account",\n "link": "https://plus.google.com/115346138147341087148",\n […]

如何使用护照发送JSON响应给broswe

嗨我想做本地login使用passport.Everything运作良好,但是我想能够显示用户名一旦用户身份validation这里是我的代码使用Node.js和MySQL: passport.use(new LocalStrategy({ usernameField: 'email', passwordField: 'password', passReqToCallback: true // allows us to pass back the entire request to the callback }, function(req, email, password, done) { var status = []; console.log('—–'); connection.query('SELECT username FROM user WHERE email ="' + email + '"', function(err, rows) { if (err) return done(err); if (rows.length) { status.push({ username: […]

基于第一方快速节点API的授权策略

我正在处理我的第一个API的devise,并且在授权概念上有些挣扎 – 我希望有些人能给我一些build议! 我正在build设的是: 最终将被第三方应用程序和移动应用程序访问的API。 基于networking的“客户端”(第一方单页应用程序)将使用API​​。 (这个第一方应用程序应该是API的一部分,还是完全独立的节点应用程序?) 我计划使用的技术: 节点 performance 护照 Mongodb与mongoose 我不会expression或护照,他们只是看起来像是最好的select,并有良好的logging – 我不希望一个潜在的解决scheme,因为替代依赖关系被解雇。 和Mongoose一样,我更喜欢Monk(甚至只是Mongojs)的外观,但是每个Tut似乎都使用mongoose,所以对于初学者来说,它似乎是最安全的select。 对用户进行身份validation非常简单(我已经通过了“梦幻般的啤酒储物柜”教程 ),我正在努力的是持续的授权。 当然,我不希望用户input一个用户名和密码,他们的每一个请求 – 这个信息应该存储在本地,并与每个请求发送? (如果是这样,怎么办?我不能find有关处理API的任何信息)或者我应该使用某种types的令牌吗? 我在“Digest”授权(包括Beer Locker教程后续)上所做的less量阅读,看起来像是有安全问题,至less在Passport的实施中(这个我并不完全了解,但似乎涉及到哈希密码,哪个护照不符合标准,只有MD5支持,即使它被添加?)。 我已经构build了一个可以使用“Basic”(直接通过Postman)进行授权的工作API,因此我拥有了基础 – 授权工作,我只需要工具就可以将它们添加到下一步! 我一直试图让我的头脑在这一两天,但我担心我陷入了一个更传统的本地Web应用程序工作stream程 – 整个API的东西都扔了一些。 任何帮助都非常感谢,即使它只是指向我一个适当的教程 – 上述要求必须相当普遍!

如何使用Node.js和Passport进行身份validation后,使用自己的ID将用户redirect到主页?

我刚刚开始学习node.js,所以在我身上很容易:P 我正在使用护照来validation用户。 成功validation后,用户需要redirect到他的主页,并将其ID作为URL参数,例如: /home?id=325346546 这是我的routes.js的一部分 // process the login form app.post('/', passport.authenticate('local-login', { successRedirect : '/home?id='+req.user._id, //error because 'req' isn't declared failureRedirect : '/', failureFlash : true })); 这是我的想法,我想通过ID作为参数的URL。 我曾试图把一个 function(req, res) { } 但它没有工作。 任何帮助将不胜感激。