Articles of passport.js

React路由器截取到Express服务器的API调用

我使用React Router和Passport.js来设置Facebooklogin。 我已经设置了快速路线和护照configuration,但是每次我在客户端点击<a href="/api/auth/facebook">链接时,都会向RR提出请求,因为我的快速应用程序线: app.get('/*', function(req, res) { res.sendFile(path.resolve(__dirname, '../client', 'build', 'index.html')) }); 当我调用服务器端路由时,它返回这个错误: Warning: [react-router] Location "/api/auth/facebook" did not match any routes 我怎样才能绕过反应路由器这一个特定的路线? 我的user_routes.js文件如下所示: 'user strict'; var bodyparser = require('body-parser'); var User = require('../models/User.js'); module.exports = function loadUserRoutes(router, passport) { router.use(bodyparser.json()); router.get('/auth/facebook', passport.authenticate('facebook', { session: false, successRedirect: '/chat', failureRedirect: '/' })); router.get('/auth/facebook/callback', passport.authenticate('facebook', { […]

Passport.js本地策略不带mongoose

我试图find有关节点应用程序的最简单的login与护照资源。 我的意思是,使用: 中间件: app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: false})); app.use(cookieParser()); app.use(session({ secret: 'keyboard cat', resave: false, saveUninitialized: false })); app.use(passport.initialize()); app.use(passport.session()); app.use(express.static('public')); 护照: passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { done({ id: id, nickname: "test"}) }); passport.use(new LocalStrategy( function(username, password, done) { console.log("test"); if (username === 'username') { return done(null, { name: "test", id: '1234'}); } […]

Nodejs用户configuration文件和会话

目标是为我的Web应用程序构build一个用户configuration文件系统。 用户将能够login,维护会话并查看他的个人资料。 在网上阅读了各种教程后,我觉得有点失落。 每个人都使用不同的库,作为networking开发的新手,目前还不清楚每个库的function。 我已经看到使用了以下库,有人可以解释用户configuration文件交互的stream程以及每个库的位置吗? passport passport-local bcrypt-nodejs connect-flash express-session jsonwebtoken express-jwt morgan cookie-parser

使用Passport.js的login系统始终执行“failureRedirect”(nodejs)

我正在做一个教程,我卡在login区域。 当我使用Passport.jslogin时,它始终在validation中执行“failureRedirect”。 尝试debuggingreplacerouter.post('login')路由后,我收到以下消息: 错误:null用户:false信息:{“message”:“Missing credentials”} 在阅读一些论坛后,我认为这个问题可能与body-parser有关。 我一直在试图解决这个问题,但我还没有成功。 我会感激最有经验的node.js程序员的帮助。 该项目的结构是:app.js routes:users.js models:user.js user.js的 var express = require('express'); var router = express.Router(); var multer = require('multer'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var bodyParser = require('body-parser'); var User = require('../models/user'); var upload = multer({ dest: './uploads' }); // create application/json parser var jsonParser = bodyParser.json(); […]

Express在更改auth头时会创build不同的会话

我是新来expression,我试图创build会话时,用户login到我的应用程序。我正在使用护照进行身份validation。 要login用户,我正在创build基本策略和成功的基本策略我正在创build一个JWT令牌,我在客户端存储在cookie中,我使用JWT战略为随后的请求。 但我注意到,快速会话正在创build一个会话,当我login其中有基本标题和另一个会话为JWT标题的后续调用。 这里是我的代码,我login保存会话 signin = function(req, res, next) { passport.authenticate('basic', function(err, user, info) { if (err) { return next(err) } if (!user) { return res.status(401).json({ error: 'message' }); } var token = jwt.encode({ user: user}, config.db.secret); res.cookie('token', token, { maxAge: 900000, httpOnly: true, path: '\/', Secure: true }); res.status(200).json({ success: true, firstName: user.firstName }); […]

User.save到DB(使用mongoose)不是一个函数

UserModelVk.findOne({vkontakteId: profile.id}, function(err, vkUser){ if(err){ return done(err) } if(!vkUser){ const user = new UserModelVk({ vkontakteId: profile.id, name: profile.displayName, access_token: params.access_token }) user.save(function(err) { if (err){ log.error(err) } localStorage.setItem('username', user.vkontakteId); localStorage.setItem('key', user.access_token) return done(err, user); }); } else { vkUser = { access_token: params.access_token } vkUser.save(function(err) { if (err){ log.error(err) } localStorage.setItem('key', vkUser.access_token) return done(err, vkUser); […]

节点js护照js用户名字段错误和密码字段错误在表单提交时不显示

我正在尝试创build一个注册页面,所有function都正常工作。 但是,如果用户名字段和密码字段提交为空,则页面redirect到同一页面,但不显示错误来自哪里。 你可以请任何人帮我解决这个问题。 为什么这个发作? 我会把我创build的代码放在下面。 谢谢 passport.use('local-signup', new LocalStrategy({ usernameField : 'username', passwordField : 'password', passReqToCallback : true }, function(req, username, password, done) { process.nextTick(function() { if(req.body.first == "" || req.body.last == "" || req.body.email == ""){ return done(null, false, req.flash('signupMessage', 'Fields must be required')); } if(username == ""){ return done(null, false, req.flash('signupMessage', 'Username must […]

API路由可用于任何令牌JWT + PASSPORT

我正在为我的应用程序构buildAPI并尝试使用护照jwt。 我可以注册新用户并login(取回令牌),但是当我使用邮递员检查“受保护的”路线时,我可以使用任何这样的“任何” Pasport.js const JwtStrategy = require('passport-jwt').Strategy, ExtractJwt = require('passport-jwt').ExtractJwt; const User = require('../api/models/user/userModel'),// load up the user model config = require('../config/database'); // get db config file module.exports = (passport)=> { let opts = {}; opts.jwtFromRequest = ExtractJwt.fromAuthHeader(); opts.secretOrKey = config.secret; passport.use(new JwtStrategy(opts, function(jwt_payload, done) { User.findOne({id: jwt_payload.id}, (err, user)=> { if (err) { return […]

用我的本地数据库连接我的应用程序(node,express,mongo)并查询它

我用node.js,express.js,passport.js和mongodb构build一个小应用程序。 我是这个技术的新手,所以我试图在上传代码到服务器上之前先在本地进行testing,然后连接到mongolab。 现在我的问题是,我无法用我的mongo shell在本地查看或查询所有用户,因此,每次添加用户时,我都无法看到是否真的添加了它。 到目前为止我的代码如下: app.js var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var port = process.env.PORT || 3000; var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var mongoose = require('mongoose'); var flash = require('connect-flash'); var session = […]

Azure AD – 检查安全组成员资格 – (Node.js,护照,Azure Web App)

我们正试图build立一个authentication/授权过程,具有以下要求: 身份validation:由Azure AD完成。 授权:只有特定安全组的成员应该被允许访问该应用程序。 虽然validation部分似乎没有问题,我们被困在授权部分。 我们正在使用快递和护照。 Azure AD一些令牌请求req.headers ,例如 X-MS-令牌AAD-访问令牌 X-MS-令牌AAD刷新令牌 X-MS-令牌AAD-ID令牌 目前,我们正在使用id-token和passport-azure-ad BearerStrategy来检查用户的安全组是否符合允许的安全组。 问题是:一旦id令牌过期,应用程序不会让我们访问应用程序。 假设在护照中设置{session: true}可以解决这个问题,我们启用了会话,但没有运气。 做了一些更多的研究,我发现这篇文章: 如何在Web应用程序中从Azure AD刷新ID令牌? ,它表示只有访问令牌可以被刷新,但ID令牌不能也不应该。 检查x-ms-token-aad-access-token和x-ms-token-aad-refresh-token ,我们发现它们没有JWT结构,例如 eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1THdqcHdBSk9NOW4tQSJ9.eyJhdWQiOiJodHRwczovL.JZw8jC0gptZxVC-7l5sFkdnJgP3_tRjeQEPgUn28XctVe3QqmheLZw7QVZDPCyGycDWBaqy7FLpSekET_BftDkewRhyHk9FW_KeEz0ch2c3i08NGNDbr6XYGVayNuSesYk5Aw_p3ICRlUV1bqEwk-Jkzs9EEkQg4hbefqJS6yS1HoV_2EsEhpd_wCQpxK89WPs3hLYZETRJtG5kvCCEOvSHXmDE6eTHGTnEgsIk–UlPe275Dvou4gEAwLofhLDQbMSjnlV5VLsjimNBVcSRFShoxmQwBJR_b2011Y5IuD6St5zPnzruBbZYkGNurQK63TJPWmRd3mbJsGM0mf3CUQ 他们不包含任何点,因此没有通过智威汤逊validation。 导致以下问题: 根据指定的允许安全组检查用户安全组的正确方法是什么?