Articles of passport.js

Node Express – req.cookies和req.session.cookie之间的区别

我试图找出req.cookies和req.session.cookie之间的区别。 我正在使用Passport在Node.js Express中进行身份validation。 如果我在我的代码中logging这两行: console.log('cookies',req.cookies); console.log('session',req.session); 我得到这个输出: cookies { 'mysite.sid.uid.whatever': 's:Ltko5IdDgsAISG0smrKNYaeIVy8nbBzF.MkGmpnf6uUKITIAgN4ws3YXqxJrMaeeSCzlKdjQnqfI' } session { cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true, secure: false }, views: 8, passport: {} } 我正在使用这个configuration: app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); app.use(busboyBodyParser()); //app.use(busboy()); app.use(cookieParser('cookie parser secret')); app.use(session({ secret: process.env["SESSION_SECRET"], saveUninitialized: true, // (default: true) resave: true, // (default: true) store: require('mongoose-session')(mongoose), […]

Passport-Facebook令牌不断返回401

目前,我正在为我的iOS应用程序使用带有Express和Passport-facebook-token模块的NodeJS。 我遇到了麻烦,因为即使我们正在通过OAuth逻辑,服务总是返回401响应。 这个代码的任何想法,为什么它保持返回401,即使它成功validation,并来到我们的handleAuthentiation方法,但没有达到我有console.log("THIS IS NOT BEING CALLED")被调用console.log("THIS IS NOT BEING CALLED")调用? var http = require("http"); var express = require("express"); var bodyParser = require('body-parser'); var database = require('./database.js'); var passport = require('passport'), FacebookTokenStrategy = require('passport-facebook-token').Strategy; var User = require('./User.js'); var app = express(); //setup json parsing app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: true})); //setup facebook authentication passport.use(new FacebookTokenStrategy({ clientID: "2454efafd33r", […]

Stormpath Express Passport保存customData或甚至默认数据

我正在运行Stormpath Express Passport的示例应用程序https://github.com/stormpath/stormpath-passport-express-sample 我无法围绕如何发布表单并保存customData或者甚至默认的数据,如给定的名字和姓氏。 总的来说,我会appeciate,如果我可以得到一个HTML(翡翠或EJS)的例子,我需要在app.js或index.js写的行。 4个晚上我一直在努力。 我已经尝试了多个Express,Stormpath的教程,但是没有一个是用来处理这个示例应用程序的。 我总是不得不安装多个新模块,但即使这样也没有任何工作。 我非常感谢Stormpath的人或者任何有经验的人能够帮助我解决我的问题,也许还会在网站上更新他们的教程,因为有些人似乎已经过时了。

自定义callbackpassportjs?

我有一个订购表单,用户需要先注册才能订购,所以我可以创build一个账户,然后像这样处理订单。 router.post('/project/new', passport.authenticate('local-signup'), function(req, res) { gateway.customer.find(req.user.id, function(err, customer) { if(customer) { // method for a customer inside the vault } else { // add a non existing customer to vault } }); }); 问题是如果某人已经login并且想要下订单。 我需要检查他们是否login,如果他们然后我可以继续订单,如果他们不是那么我需要authentication,然后login。 所以这样的事情对我来说是有意义的。 //prefer this!! router.post('/project/new', function(req, res) { if(req.user) { // do stuff for existing logged in user } else […]

Auth / Session不能在带护照的Sails中的一个页面上工作

我已经使用护照来pipe理Sails中的身份validation。 这是工作栏一个奇怪的问题。 如果我检查用户以修改导航栏 <ul class="nav navbar-nav navbar-right"> {{#if user}} <li>{{ user.username }}</li> <li><a href="/logout">Logout</a></li> User! {{else}} <li><a href="/login">Login</a></li> {{/if}} </ul> login并进入/这里什么也没有。 当我去/login或/注销,这两个使用相同的模板,并分享上面的代码,我遇到了两个条件。 有任何想法吗?

如何使用SQL ServerconfigurationPassportjs?

我正在写一个基于SQL Server ,ExpressJs,NodeJS,AngularJs的应用程序,我是一个快速初学者,我需要处理会话,所以我一直在思考PassportJs,我无法find文档集成SQL Server与PassportJs,所以我很困惑,我一直在尝试,但我还没有得到它,我用快速生成器我的应用程序,所以这是我的app.js 护照要求: var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var session = require('express-session'); 路线: var routes = require('./routes/index'); var login = require('./routes/login'); 快递会话: app.use(session({secret: 'xXxXxXXxX'})); app.use(passport.initialize()); app.use(passport.session()); app.use('/', routes); app.use('/login', login); 护照INIT: var initPassport = require('./r12_modulos/sesion/passport-init.js'); initPassport(passport); 这是我在passport-init.js : var conex = require('../conexion_bd/conex_mssql.js'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; […]

OAuth范围在同一应用程序中的不同stream量?

上下文 我有一个Node.js应用程序,它具有一套“复杂”的OAuthstream程,以使UX更简单。 我有通常的login和注册stream程,您可以使用OAuth提供程序进行身份validation。 这里我不需要任何特殊的scope ,因为OAuth纯粹用于身份validation,用户没有理由要给我提升权限(比如私人的GitHub仓库),甚至可能认为这是一个可疑的事情,所以他离开了,再也不会访问我的产品。 所以,没有纯粹的authenticationstream程的scope 。 该应用程序还具有导入function,您可以从OAuth提供程序(例如GitHub存储库)导入实体列表。 默认情况下,你不会在这里要求任何scope 。 点击“寻找你的私人存储库?” button再次validation你对GitHub,要求repo范围。 这一切都很好。 问题 当用户尝试再次login或以其他方式进行身份validation但不明确请求repo作用域时,GitHub认为这是明确的降级请求。 问题是用户在login过程中不会因为没有特殊原因而降级 。 同样, 我不想在login时要求比我需要更多的权限 。 离开这个状态的东西比在login时要求repo更糟糕,但这也是一个非常糟糕的select。 潜在的解决scheme 除了两个非解决scheme,我提出的潜在解决scheme是: 根据请求的scope明确地询问GitHub的唯一访问令牌 ,分别存储令牌,然后根据需要使用它们 那真是太好了,除非它是有状态的,我还没有find办法去做; 他们似乎给每个应用程序用户一个单一的令牌,我怀疑OAuth是如何工作的,但我几乎不是这方面的专家。 如果GitHub拥有比所要求的更多的特权,请明确告知GitHub 不要降级它。 这听起来应该是默认的行为。 无论如何, 有什么办法可以告诉GitHub不要降级令牌吗? 如果没有,有没有其他办法可以解决这个问题,而不是在整个应用程序中要求相同的范围? 这首先会部分地破坏示波器的目的。 另外,这是一个GitHub的具体问题? 我是否需要按提供者的方式处理这个问题? 有没有协议级别的解决scheme奇迹般地让问题消失? 还是OAuth只是不考虑用户体验? FWIW我正在使用iojs和passportjs ,但我认为这与问题没有任何关系。

使用google-passport-oauthlogin后,req.user未定义

在使用Google帐户成功login后,在callback请求中,将req.user设置为正确的用户,并且req.isAuthenticated()为true。 大! 但是,任何后续请求都会将req.user定义为undefined。 不pipe我做什么。 这个问题同时出现在passport-google-auth2和passport-google-auth中 。 这是我的index.js样子: app.set('views', './src/express/views'); app.set('view engine', 'jsx'); app.engine('jsx', expressReactViews.createEngine({ beautify: true })); app.use(express.static('./dist')); app.use(cookieParser()); app.use(bodyParser.json()); app.use( bodyParser.urlencoded({ extended: true })); app.use(session({ secret: 'keyboard cat', proxy: true, resave: true, saveUninitialized: true, cookie: { secure: true } })); app.use(passport.initialize()); app.use(passport.session()); passport.serializeUser(function(user, done) { // user is passed here correctly done(null, user.id); }); […]

如何踢用户会话?

我的系统使用passport.js进行身份validation。 用户可以根据本地策略进行login和注销。 我正在研究一个允许超级用户从我的系统踢用户的function。 我目前的做法是: 将用户configuration文件设置为禁用 删除用户会话 用户无法再次login,因为用户configuration文件被禁用(使用本地策略) 我怎样才能删除MongoStore中的用户会话? "express": "~4.13.1", "express-session": "~1.11.3", "mongoose": "~4.0.7", "passport": "~0.2.2", "passport-local": "~1.0.0",

我应该如何validation错误与续集和护照login

我已经设置在用户模型中validation。 我的路线代码是这样的,我想要validation。 var express = require('express'); var loginRouter = express.Router(); var passport = require('passport'); var User = require('../app/models/model')().User; module.exports = function() { var loginController = require('../controller/loginController')(); loginRouter.get('/login',loginController.getLogin); loginRouter.post('/login', function (req, res, next) { User.validate().success(function () { next(); // only call next if validation passes }).error(function (error) { console.log(error); res.redirect('/auth/login'); // or res.send({error: true}) or res.redner( […]