Articles of passport local

NodeJS Passport本地身份validation不起作用

我使用passportjs本地进行身份validation。 它只是redirect到failureRedirect它不显示任何错误,它总是redirect到failureRedirect与原始用户名和密码,以及重复什么是我的代码中的错误 我的passport.js文件: const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const bcrypt = require('bcryptjs'); const Admin = require('../models/admin/user'); const config = require('../config/database'); module.exports = function(passport){ // With local startegy passport.use(new LocalStrategy(function (userName, password, done){ // Match Username let query = {userName:userName}; Admin.findOne(query, function(err, user){ console.log(user); if(err) throw err; if(!user){ console.log('No user Found'); return done(null, […]

passportJS:使用名称不是id的用户标识字段

我发现这个伟大的节点mysql样板: https://github.com/ocastillo/nodejs-mysql-boilerplate 它运作了不起! 但是,现在我需要将其挂接到我现有的用户表中,而我的键字段被命名为userID,而不是简单的id,并且在mysql中更改键字段名称打破了示例。 所以我的问题是,在项目中,我需要指定一个不同的ID字段名称? 我在/util/auth.js中看到了user.id passport.serializeUser和id在passport.deserializeUser函数中,但似乎它也必须在别处指定。 我希望这是passportjs用户的简单问题!

了解Passport.js – 篡改serializedUser

我试图绕过passport.js ,并确定我没有正确使用它。 特别是使用serializeUser()和deserializeUser()函数。 我的function看起来类似于下面的两个。 我本质上推动我的数据库user._id进入会议(我不喜欢做),并可以在浏览器中用cookie查看器轻松查看它。 passport.serializeUser(function(user, done) { done(null, user._id); }); passport.deserializeUser(function(id, done) { done(null, id); }); 因此,对于每一个安全的请求,我运行一个isAuthenticated()函数来检查用户是否使用Passport进行身份validation,然后使用req.user的反序列化ID来对数据库执行各种CRUD操作。 我想知道的是什么会阻止已authentication的用户将其自己的user._idreplace为会话中的其他用户的user._id,并获得所有这些不同用户的CRUD数据库操作的访问权限。 护照是否有某种哈希algorithm来检查序列化数据是否被篡改? 我不应该使用我的数据库CRUD操作返回的ID? 有没有其他的方法来避免将user._id发送到浏览器?

护照本地types错误

我正在尝试在我的Sails项目中使用passport-local进行身份validation。 在我的控制器中: passport.authenticate('local', function(err, user, info) { if ((err) || (!user)) { res.json({message: 'Unable to authenticate'}); return; } req.login(user, function(err) { if (err) { res.json({message: 'Unable to login'}); console.log(err); return; } res.json({message: 'logging in'}); }); })(req, res); 在configuration文件中: passport.use(new LocalStrategy(function(username, password, done) { User.findOneByUsername(username).done(function(err, user) { if (err) { return done(null, err); } if (!user) […]

服务器重新启动后,通过身份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存储

NavBar地址加载angular模板,但不是根shell

我正在使用Node.JS和Express,Angular.JS以及ACL的节点模块连接angular色。 我想让一个user.status为“Platinum”的用户访问“Platinum”,而不是“Gold”,反之亦然。 我有ACL部分工作,如果我input/白金导航栏我不能访问/黄金,但是当我尝试访问/白金我只得到模板,而不是根shell,所以会出现这样的: You made it! You have the {{status}} status! 如果我点击一个angular度到/ Platinum的链接,一切都会按照原样进行。 如果我在导航栏中input任何中性地址,则一切正常。 这应该是一个简单的解决scheme,但我还没有弄明白。 这里是设置授权的代码,我很确定这里的一切都没问题。 ConnectRoles = require('connect-roles') var user = new ConnectRoles({ failureHandler: function(req, res, action){ var accept = req.headers.accept || ''; res.status(403); if(accept.indexOf('html')) { res.render('access-denied', {action: action}); } else { res.send('Access Denied – You don\'t have permission to: ' + action); } […]

使用本地策略进行身份validation时,Passportjs引发500服务器错误

我正尝试使用Facebook和本地策略进行多策略validation。 Facebook身份validation通常工作,我的数据库得到更新,但本地策略给我以下错误: TypeError: undefined is not a function at allFailed (/Users/r/Desktop/jb/node_modules/passport/lib/middleware/authenticate.js:111:15) at attempt (/Users/r/Desktop/jb/node_modules/passport/lib/middleware/authenticate.js:160:28) at Strategy.strategy.fail (/Users/r/Desktop/jb/node_modules/passport/lib/middleware/authenticate.js:277:9) at Strategy.authenticate (/Users/r/Desktop/jb/node_modules/passport-local/lib/strategy.js:75:17) at attempt (/Users/r/Desktop/jb/node_modules/passport/lib/middleware/authenticate.js:341:16) at authenticate (/Users/r/Desktop/jb/node_modules/passport/lib/middleware/authenticate.js:342:7) at Layer.handle [as handle_request] (/Users/r/Desktop/jb/node_modules/express/lib/router/layer.js:82:5) at next (/Users/r/Desktop/jb/node_modules/express/lib/router/route.js:110:13) at Route.dispatch (/Users/r/Desktop/jb/node_modules/express/lib/router/route.js:91:3) at Layer.handle [as handle_request] (/Users/r/Desktop/jb/node_modules/express/lib/router/layer.js:82:5) at /Users/r/Desktop/jb/node_modules/express/lib/router/index.js:267:22 at Function.proto.process_params (/Users/r/Desktop/jb/node_modules/express/lib/router/index.js:321:12) at next (/Users/r/Desktop/jb/node_modules/express/lib/router/index.js:261:10) at SessionStrategy.strategy.pass (/Users/r/Desktop/jb/node_modules/passport/lib/middleware/authenticate.js:318:9) at SessionStrategy.authenticate […]

身份validationExpressJS – > passportJs:错误:发送后无法设置标头

我正在使用passportjs在expressjs中进行身份validation。 这是我的代码login.js passport.use(new LocalStrategy( function(username, password, done) { //console.log(username); Usercollection.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username.' }); } else{ return done(null, user); } // if (!user.validPassword(password)) { // return done(null, false, { message: 'Incorrect password.' }); // } […]

Passport.js执行

我一直在看网上的一些passport.js教程,但没有清楚地了解到底发生了什么。 有人能帮我清楚我的疑惑吗? 请先阅读底部的段落。 所以假设我正确地设置了一切,这是login策略: passport.use('login', new LocalStrategy({ passReqToCallback : true }, function(req, username, password, done) { // check in mongo if a user with username exists or not User.findOne({ 'username' : username }, function(err, user) { // In case of any error, return using the done method if (err) return done(err); // Username does not […]

req.session.passport.user未定义

我找不到错误,我的方法不会序列化用户。 在passport.serializeUser中,我看到数组的用户,但是当我触发受保护的路由时,req.isAuthenticated,总是返回false 我的护照文件: passport.serializeUser(function(user, done){ console.log('OK')//is show in console done(null, user); }); passport.deserializeUser(function(id, done){ User.findById(id, function(err, user){ done(err, user) }); }); passport.use('login', new LocalStrategy({ usernameField : 'username', passwordField : 'password', passReqToCallback: true }, function(req, username, password, done){ process.nextTick(function(){ User.findOne({'username' : username}, function(err, user){ if(err){ return done(err); } if(!user){ return done(null, false); } if(!user.validPassword(password)){ return done(null, […]