Tag: passport.js

如何让Google停止在PassportJS中自动logging用户?

我只允许用户使用某个域名login。 这个特定的function起作用,而不是问题的根源。 问题是当用户尝试使用不正确的电子邮件地址login时,用户会陷入一种负面的反馈循环。 参照上面的图片,用户(在没有信息的空白隐身页面中)从第一步开始。 单击login使他们到步骤二,然后到步骤3.试图login以不正确的域名结尾的电子邮件地址使他们到步骤4.这是所需的。 第四步之后,如果他们从网站注销,他们被提出第一步。 这是可取的。 注销代码如下。 app.get("/logout", function(req, res) { req.logout() req.session.destroy() res.clearCookie("connect.sid") res.redirect("/") }) 他们再次点击login后会发生什么是不可取的。 而不是把他们带回到第二步(所需的,所以他们可以用他们的正确的电子邮件地址再次login),它使他们直接到第四步。 就好像谷歌记得最后login的人一样。 这是我的passport.jsconfiguration文件的代码 。 简短的问题:我如何向Google表示不要这样做? 或者触发浏览器,让他们再次login? 我很茫然。 额外的细节:在谷歌的Oauth2.0文档 ,它提到了高清和领域,可以限制login到一个特定的领域。 但是我不知道如何在PassportJSconfiguration文件中configuration它。

护照req.isAuthenticated()总是返回fasle

我正在尝试使用快速会话来login用户。 我希望用户能够访问个人资料页面并查看他们的用户数据(如果他们已经login)。 在我的routes.js的第9行:req.isAuthenticate()返回false,即使我已经成功login一个用户。 我的最终目标是req.user,护照保存到会话中,在/ passport GETpath中定义,以便我可以将其作为数据发送到我的模板引擎。 https://gist.github.com/anonymous/f6ecb472eb082775181e#file-routes-js-L9 提前致谢

我怎样才能存储其他表单字段与passport-local.js

我正在做一个node + passport.jsauthentication。 我做了一个简单的login/注册应用程序。 它工作正常,但它只存储用户名和密码。 如何通过带login工作loginauthentication的signup.html页面将电话号码,电子邮件,兴趣爱好,性别等其他表单字段存储到数据库中? 任何人都可以有解决scheme,所以我可以存储在数据库中的所有字段…. //my schema is :– var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userSchema = mongoose.Schema({ local : { username : String, gender : String, phone : String, email : String, password : String } }); userSchema.methods.generateHash = function(password) { return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); }; userSchema.methods.validPassword = function(password) […]

如何使用Passport保护路线终点?

我想build立用户身份validation到我的简单的Node.js应用程序使用教程在这里: http : //code.tutsplus.com/tutorials/authenticating-nodejs-applications-with-passport–cms-21619 它在保护应用程序主页方面效果很好,因此只有在login后才能访问它,但是我很难将REST端点限制为仅login用户。 正如在使用邮递员,我仍然可以调用没有任何身份validation的端点。 在我的路线中,我有以下几点: var express = require('express'); var router = express.Router(); // if the user is authenticated var isAuthenticated = function (req, res, next) { if (req.isAuthenticated()) return next(); res.json("not authenticated"); } /* * GET carlist. */ router.get('/carlist', isAuthenticated, function(req, res) { var db = req.db; var collection = db.get('carlist'); collection.find({},{},function(e,docs){ […]

使用Passport授权设置Postman进行APItesting

在testing我的应用程序的API时,我试图让邮递员工作时有点困惑。 即,我正在使用Passport身份validation; 然而,我不知道哪种types默认或在我的代码中使用。 我怎样才能知道这一点,我应该select哪种types的邮递员? 这是相关的护照代码: var login = require('./login'); var signup = require('./signup'); var User = require('../models/user'); module.exports = function(passport, path, nodemailer, sesTransport, EmailTemplate, templateDir, template){ // Passport needs to be able to serialize and deserialize users to support persistent login sessions passport.serializeUser(function(user, done) { //console.log('serializing user: ');console.log(user); done(null, user._id); }); passport.deserializeUser(function(id, done) { User.findById(id, […]

Passport-jwt令牌过期

我正在使用passport-jwt生成我的令牌,但我注意到令牌永不过期,有没有什么办法根据为我设置的规则使特定令牌无效,如: 'use strict'; const passport = require('passport'); const passportJWT = require('passport-jwt'); const ExtractJwt = passportJWT.ExtractJwt; const Strategy = passportJWT.Strategy; const jwt = require('../jwt'); const cfg = jwt.authSecret(); const params = { secretOrKey: cfg.jwtSecret, jwtFromRequest: ExtractJwt.fromAuthHeader() }; module.exports = () => { const strategy = new Strategy(params, (payload, done) => { //TODO: Create a custom validate […]

在Express中更新cookie会话不会向浏览器注册

我已经build立了一个工作logintesting,如下所示: var express = require('express'); var fs = require('fs'); var http = require('http'); var path = require('path'); var routes = require('./routes/index.coffee'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var User = require('./userdb.coffee'); var app = express(); var RedisStore = require('connect-redis')(express); passport.use(new LocalStrategy(function(username, password, done) { return User.findOne({ username: username }, function(err, user) { if […]

如何在node.js上进行一些authentication后避免请求stream丢失的数据?

请求stream如何与node.js(express或restify)一起工作? 当试图将audio,mpeg或其他二进制文件上载到服务器的客户端时,请求应该是服务器上的可读stream。 我们可以使用request.pipe()将其传入另一个stream,例如从请求中获取文件,然后使用knox将file upload到amazon s3。 当我使用asynchronous身份validation方法时,部分stream式数据正在丢失,并且长度与传输的content-length头部不再匹配。 有什么办法可以避免这种行为? 请求stream的数据只存储在内存中还是node.js将数据存储在某个本地临时文件夹中? var express = require('express'), app = express(), passport = require('passport'), BasicStrategy = require('passport-http').BasicStrategy; var users = [ { id: 1, username: 'bob', password: 'secret', email: 'bob@example.com' } , { id: 2, username: 'joe', password: 'birthday', email: 'joe@example.com' } ]; function findByUsername(username, fn) { for (var i = […]

NodeJS Passport:通过两种策略multilogin – 序列化问题

我想提供用户login两种策略之一的能力:通过Instagram和通常的本地策略。 对于本地我写了简单的function,findDB中的用户,并提供它的用户信息。 这是如何工作的: passport.use(new InstagramStrategy({ clientID: global.INSTAGRAM_CLIENT_ID, clientSecret: global.INSTAGRAM_CLIENT_SECRET, callbackURL: "http://**.**.**.**:3000/auth/instagram/callback" }, function(accessToken, refreshToken, profile, done) { process.nextTick(function () { console.log('Access token: ' + accessToken); global.access_token = accessToken; return done(null, profile); }); } )); passport.use(new LocalStrategy( function(email, password, done) { console.log('chec user'); process.nextTick(function() { db.findByEmail(email, function(err, user) { if (!user) { console.log('Unknown user ' + […]

单点login多个nodejs应用程序

我们有3个nodejs web应用程序运行在同一个vps上的多个子域的域名上,并为每个域名分别实施通行证validation。 我们希望单个用户能够使用单一帐户访问所有应用程序,并且为了账户pipe理的目的,我们添加了accounts.example.com作为第四个应用程序。 要求是 – 一旦用户在accounts.example.com中进行身份validation,如何使用户访问该会话的其余三个Web应用程序。