Tag: passport.js

用nodejs组织文件夹结构和数据库查询,使用MVC模式expressionmongoose

我是nodejs以及mvc模式的新手。 我试图创build一个应用程序,利用快递,mongoose,ejs,护照。 我不确定在哪里放置我的数据库查询。 目前我已经开始将它们添加到controllers / routes.js文件中。 以下是我迄今为止创build的近似文件夹结构: |– config — database.js // Exports just the db url — passport.js // Exports Passport local auth strategies (includes db connections) |– controllers — routes.js // Routes |– models — user.js // Exports mongoose user schema |– public |– views — home.ejs // Home ejs page — signup.ejs […]

PassportJS上的Facebook策略可以有多个回叫url吗?

我使用PassportJS在我的网站上对Facebook用户进行身份validation。 其中最棘手的部分是,我首先使用简单的Facebook权限login用户,每个用户默认授予Facebooklogin权限,但用户根据他们的行为,以后可以授予Fanpage Admins权限。 我没有问题处理这两个授权,hovewever,当我想redirectFanpage Admin用户到不同的url,我不能因为Passport只允许我为我的Facebook策略设置一个单一的callbackURL,因为所有来自Facebook的callback结束at / auth / facebook / callback。 var passportOptions = { successRedirect: '/admin/', failureRedirect: '/' } var fbAdminPermissions = { scope: ["email, manage_pages"] } var fbNormalPermissions = { scope: ["email"] } app.get('/auth/facebook', passport.authenticate('facebook', fbNormalPermissions)); app.get('/auth/facebookPages', passport.authenticate('facebook', fbAdminPermissions)); app.get('/auth/facebook/callback', passport.authenticate('facebook', passportOptions)); 我需要有多个successRedirecturl取决于如果用户授予一般权限或Facebookpipe理员权限。 我想将FBAdminsredirect到另一个url,而不是/ admin root。 我希望如何实现这一点,而不是创造一个新的Facebook战略?

Node.JS + Passport.SocketIO:编辑并保存`socket.handshake.user`属性

我使用Node.JS(0.10.28),Passport.JS(0.2.0)+ Passport-Google(0.3.0)和Passport.SocketIO(3.0.1)。 目前,我可以通过使用req.user在我的应用程序path中访问由Passport.JS创build的用户: app.get('/profile', function(req, res) { // send user data res.send(req.user); }); 使用Passport.SocketIO,我也能够访问用户: io.sockets.on('connection', function(socket) { // get user data console.log(socket.handshake.user); //… }); 也可以通过在app.get/post/all(…)作用域中使用req._passport.session.user.property = new_property_value来编辑req.user并“保存”它。 然后更新显示在io.sockets.on(…)用户对象中。 我的问题是:是否有可能在io.sockets.on(…)作用域中编辑和“保存” socket.handshake.user ,以便更新后的用户将在app.get/post/all(…)显示req.user中的更改app.get/post/all(…) ? 我已经尝试了以下无济于事: io.sockets.on('connection', function(socket) { // rename username socket.handshake.user.username = 'new_username'; //… }); … app.get('/profile', function(req, res) { // send user data res.send(req.user); // […]

Passport-saml实现

我试图让任何战略的护照工作,但最终我想得到它与SAML实施工作。 现在看来,只要策略被调用,它总是失败。 我想知道如果也许我的服务器处理链设置错了? ` 'use strict'; // ———————————- BEGIN MODULE SCOPE VARIABLES ———————————- var http = require('http'), express = require('express'), session = require('express-session'), path = require("path"), samlStrategy = require('passport-saml').Strategy, passport = require('passport'), //flash = require('connect-flash'), morgan = require('morgan'), app = express(), server = http.createServer(app); // ———————————- END MODULE SCOPE VARIABLES ———————————— // ———————————- BEGIN SERVER […]

护照loginredirect

我正在使用passport-facebooklogin到使用Facebook的网站(实现是完整的,工作正常)。现在,我想redirect到一个页面,其中包含一个表格,他们应该填写一旦他们从fblogin,如果没有这样做(没有填写表格并提交),他们不能访问网站上的任何其他链接。 这里是我想到的方法:一旦用户login,我会做一个数据库查询内部的战略,看看他们是否以前提交过的数据,如果他们已经提交我会设置session.filledOrNot = true的对象我将返回到完成的callback,并使用此属性,让他们继续或redirect回同一页面。 这是一个好方法吗?

req.user重启节点后

我已附加passportjs来validation我的网站上的用户。 我使用localStrategy,一切正常。 但我有一些问题(可能是passportjs的function) – 重新启动节点后,req.user未定义,用户应该再次login。 我应该怎么做启动服务器上初始化req.user?

Passport.js会话pipe理没有cookie

我对节点世界相当陌生。 我已经环顾了几天,我不能find现有的npm“官方”解决scheme。 如果有道歉,我希望能find合适的节点资源。 根据互联网上提供的各种实例,我实施了一份工作护照本地政策。 它运作良好 我现在想要实现会话pipe理,特别是我不想使用cookie,而是使用GET / POST参数。 其背后的原因是,我正在构build一个API服务,可能必须使用cookie /头不存在的自定义协议(而不是HTTP)。 我已经看到所有的会话支持护照的实现,他们似乎都依赖于快速/连接会话包,反过来,似乎只支持cookie和没有办法读/写会话键POST / GET参数。 在我推出我自己定制的解决scheme之前,如果存在,你能指出我已经有的东西吗?

你可以在RESTFUL环境中使用NodeJs Passport Sessions吗?

我正在尝试在RESTful环境中设置护照,并不能让用户序列化到会话数据中。 虽然login和注册工作很好。 我或多或less地遵循scotch.io的教程,但是我做了一些调整,以便通过RESTful API工作。 简而言之,这是我的服务器设置: var express = require("express"); // v 4.8.5 var cookieParser = require("cookie-parser"); // v 1.3.3 var bodyParser = require("body-parser"); // v 1.9.0 var session = require("express-session"); // v 1.8.2 var passport = require("passport"); // v 0.2.1, passport-local is v 1.0.0 var app = express(); require("./config/Passport")(passport); app.use( morgan('dev') ); app.use( cookieParser(secret) ); […]

当Cookie被禁用时,护照会话pipe理

我正在制作一个Web应用程序,将AgularJS作为我的前端,Sails(NodeJS + Express)作为我的后端。 我正在使用护照(护照本地)进行身份validation,这似乎工作很好,直到我在safari中进行testing。 我注意到会话总是会返回null。 我使用护照会话授权,我无法使用req.session.passport获取会话variables,因为它是空的。 我发现我在Safari中禁用了Cookie。 这会破坏我的应用程序的授权。 有没有一种方法可以使会议pipe理,即使在浏览器中禁用cookie,也能正常工作?

var用户来自Passport文档

我只是让我的头在Passport Node 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: 'Incorrect password.' }); } return done(null, user); }); } )); 这很好,我理解这个逻辑。 不过我不明白variablesUser来自哪里 User.findOne({ […]