Articles of passport.js

护照可以保存用户对象不在req.user?

护照在默认情况下将其用户对象保存在req.user 。 我可以configuration它保存在其他地方,如req.whatever ?

身份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.' }); // } […]

护照反序列化用户没有在帆中调用

我正在使用Sails版本0.11并尝试使用jwt身份validationconfiguration应用程序。 configuration/ passport.js var passport = require('passport'); var jwt = require('express-jwt'); module.exports = { http: { customMiddleware: function(app) { console.log('express midleware for passport'); app.use(jwt({ secret: sails.config.session.secret, credentialsRequired: false}).unless({path: ['/login']})); app.use(passport.initialize()); app.use(passport.session()); } } }; 服务/ passport.js /* other code */ passport.serializeUser(function(user, done) { console.log(user); done(null, user.id); }); passport.deserializeUser(function(id, done) { console.log(id); findById(id, function(err, user) { […]

无法将用户加载到会话中

由于某种原因,testing我的身份validation ,我创build了一个用户login8 === D和密码123 ,然后passportjs说,当我尝试login时,它无法序列化该用户,但与任何常规像用户名bill@kentucky.com然后它工作正常,并login序列化用户。 我也可以提供代码作为例子,但它是否具有奇怪的字符( 如'=' )呢? 另外为什么我可以用.id而不是._id来序列化,为什么这样做呢? 我使用mongoDB,它总是生成一个_id 。 exports.postLogin = function(req, res, next) { // Do email and password validation for the server passport.authenticate('local', function(err, user, info) { if(err) return next(err); if(!user) { req.flash('errors', {msg: info.message}); console.log("ERROR BOYS"); } // Passport exposes a login() function on req (also aliased as logIn()) that […]

Node.js Express – 在不同的服务器上共享Passport会话

所以我们有一个“web”服务器和一个API服务器 – web服务器提供HTML,API服务器提供JSON。 我们使用Passport的Twitter策略在Web服务器上进行身份validation。 我的问题是 – 检查API服务器的最佳方法是什么,用Web服务器进行身份validation的用户也使用API​​进行身份validation? 我的假设是,我们应该把大部分Passport代码放到Web服务器上,让用户像往常一样使用Passport进行身份validation,并使用API服务器中的某些中间件来检查用户是否已login(有会话): app.use(passport.initialize()); app.use(passport.session()); app.use(expressSession({ secret: 'keyboard cat', store: new MongoStore({mongooseConnection: mongoose.connection}) })); app.use(function(req,res,next){ if(req.isAuthenticated()){ next(); } else{ console.log('unauthenticated request'); res.status(403).json({error:'unauthorized request'}); } }); 但是,上述似乎还不够。 我完全搞不清楚API服务器上需要什么代码 – 我相信我需要从相同的会话存储中读取Web服务器写入的内容,并在API服务器的请求中查看令牌,并将其与会话存储中的令牌? 我不知道我明白了req.isAuthenticated()函数的作用是什么? 好像我现在需要写我自己的req.isAuthenaticated()函数,它会话存储asynchronous读取… 有没有人有一个如何做到这一点的权利?

使用passport.jspipe理express.js中不同types用户的身份validation

我在使用Express.js 4.x中的Passport.jspipe理不同types用户的状态时遇到问题。 我在我的mongodb数据库中有3种用户集合 1. Member (has his own profile page) 2. Operator (has his own dashboard) 3. Admin (handles the backend) 我已经创build了他们单独的login/注册系统。 但只有成员似乎工作,而其他人不。 我甚至为每个用户编写了不同的login/注册策略集。 喜欢会员passport.use('注册')和passport.use('login')。 对于运营商passport.use('op-signup')和passport.use('op-login')等等。 我认为我没有使用正确的方法来处理用户,这意味着集合不需要在单个集合中分离,而是基于angular色。 对 ? 这是目前我现在使用的mongoose模型; // Member Schema var MemberSchema = new Schema({ username: String, password: String, name: { first: String, last: String }, locality: String, // and other attributes […]

angular色http发布数据对象不被节点服务器视为对象

我使用angular度在客户端执行一个职位的用户对象的服务器。 这个用户对象只是让我在一个对象中传递所有的用户信息,用户名,密码,电子邮件,名字等。 而不必将每个作为一个单独的variables。 我在chrome的开发人员工具中看到以下POST参数。 {"username":"adfasdfasdf","password":"12123123123"} 但是,在我的服务器端js数据来作为单独的variables。 而不是具有用户名和密码的对象。 因此,console.log('userData ='+ userData)行logging用户名。 而“完成”variables包含密码。 为什么我没有得到服务器端的对象? 客户端HTML <form class="form-signin", ng-submit="register()"> <input type="text" class="form-control" placeholder="Username" ng-model="user.username"> <input type="password" class="form-control" placeholder="Password" ng-model="user.password"> </form> 客户JS var pollControllers = angular.module('pollControllers', []); pollControllers.controller('RegisterCtrl', ['$scope', '$http', '$location', function($scope, $http, $location) { // This object is filled by the form $scope.user = {}; $scope.register = function() […]

使用护照注册后,请阻止用户进行身份validation

我使用护照和express.jsbuild立了login/注册界面和机制。 我的问题是在用户注册后,我们被redirect到login页面,但是我们最终可以更改URL并立即在用户configuration文件中input,但这当然不是期望的。 我希望用户在注册后没有通过身份validation,他需要在login页面中手动input他/她的凭据,然后才能进入configuration文件。 router.get('/', isAuthenticated, function(req, res) { res.render('library', { // passing the id of and username the connecting user to the dust userid: req.user._id, username: req.user.userName }); }); router.get('/library', isAuthenticated, function(req, res) { res.render('library', { // passing the id of and username the connecting user to the dust userid: req.user._id, username: req.user.userName }); }); […]

ExpressJs Passportjs将每个请求的用户对象反序列化为路由

我有一个ExpressJS应用程序,使用Passportjs与Facebook进行身份validation,一切都按预期工作exception的一个问题。 我有vehicle.js /routes/其中包含一些路由(router.gets和router.posts)需要身份validation和一些不。 如果用户login,则由vehicle.js处理的每个请求都将导致用户反序列化,这是一个Mongoose查找。 当请求发送到不需要身份validation的router.get和/或router.post ,如何避免这些不必要的Mongoose查找? 我已经查阅了这个SO问题 ,并没有解决我的问题(我已经宣布上面的静态资源护照,所以他们没有通过身份validation)。 app.js中的Passportconfiguration如下所示: // Configuring Passport var passport = require('passport'); var expressSession = require('express-session'); app.use(expressSession({secret: 'thisIsSecret'})); app.use(passport.initialize()); app.use(passport.session()); // Using the flash middleware provided by connect-flash to store messages in session // and displaying in templates var flash = require('connect-flash'); app.use(flash()); // Initialize Passport var initPassport = require('./passport/init'); initPassport(passport); […]

在Express.js中将variables从中间件传递给Passport

我想通过一个variables中间件,并成功使用Facebook的护照成功后可用。 // route for facebook authentication and login router.get('/connect/facebook', rentalinfo, passport.authenticate('facebook', { scope : 'email' })); // handle the callback after facebook has authenticated the user router.get('/connect/facebook/callback', passport.authenticate('facebook', { //successRedirect : '../../../protected', failureRedirect : '/' }), function(req, res) { // successful auth, user is set at req.user. redirect as necessary. //Get the redirect location from […]