Articles of passport.js

MEAN如何处理authentication?

我想知道基本stream程。 据我所知,当调用loginAPI时, passport.js创build会话并将其存储在mongo中。 谁创build会话? 谁创buildcookie? 快递还是护照? 我读到,当其他请求来了,用户对象被附加到它,使用会话ID。 谁做的? Express服务器或passport.js或其他人?

Node.js Passport不会调用下一个函数

我使用Node来构build一个应用程序,使用Passport.js来处理使用本地数据库的用户login。 所以我有下面的代码,当用户去/configuration文件被调用。 成功login后,用户被redirect到/ profile。 根据摩根,这发生了什么。 app.get('/profile', passport.authenticate('local-login', { session : false, failureRedirect : '/login' }), function(req, res) { console.log("testnow"); res.render('profile.ejs', { user : req.user // get the user out of session and pass to template }); }); 我的本地login代码如下。 passport.use('local-login', new LocalStrategy({ // by default, local strategy uses username and password, we will override with email […]

REST API不会根据标头中的Passport JWT令牌更改用户?

所以我有一个用Node.JS,MongoDB和Express编写的REST API。 我正在使用护照和passport-jwt使用JSON Web令牌进行身份validation,但是当我为不同的用户帐户使用不同的令牌时,请求每次都保存相同的用户。 这里是routes.js中的身份validation端点: // Authenticate the user and get a JSON Web Token to include in the header of future requests. apiRoutes.post('/authenticate', function(req, res) { User.findOne({ email: req.body.email }, function(err, user) { if (err) throw err; if (!user) { res.send({ success: false, message: 'Authentication failed. User not found.' }); } else { // […]

使用passport.js LocalStrategy进行一个字段validation

我正在使用passport.js LocalStrategy来validation用户名和密码。 但现在我有一个字段来validation是active: true/false (无论用户是否激活)。 下面的代码显示了用户名和密码的validation。 app.js passport.use(new LocalStrategy({ usernameField: 'username', passwordField: 'password'}, function(username, password, done) { User.findOne({ name : username}, function(err, user) { if (!user){ return done(null, false,{message: 'Incorrect username' }); } if(user){ var validPassword = user.comparePassword(password); if(!validPassword){ return done(null, false,{message: 'Incorrect password' }); } } return done(null, user); }); } )); router.post('/pages/auth/login', function(req, […]

使用OOP扩展Node.js模块

我是否错过了某些东西,还是仅仅是不可能扩展像Java类那样的任意Node模块? 具体例子: 我需要passport-remember-me来将req对象暴露给_issue方法。 我试图做的是扩展该function( RememberMe.Strategy ),修改_issue函数,然后委托给原始父类的函数为实际的业务逻辑: // 1: Extend RememberMeStrategy function IWillRememberYou (options, verify, issue) { RememberMeStrategy.call(this, options, verify, issue); } util.inherits(RememberMeStrategy, IWillRememberYou); // 2: Override some method IWillRememberYou.prototype.authenticate = (req, options) => { // Save original function const issue = this._issue; // Wrap the supplied callback so it can now be sent extra args […]

isAuthenticated返回函数为false

我已经实现了passport.jslogin时,我把我的passport.authenticated()函数在中间件。 app.post('/api/v1/login', function (req, res, next) { passport.authenticate('local-login', function (err, user, info) { if (user == false) { return res.json(ApiException.newNotAllowedError(api_errors.invalid_auth_credentials.error_code, null).addDetails(api_errors.invalid_auth_credentials.description)); } else { next(); } })(req, res, next); }, controllerIndex.auth.login); login成功。 当我通过使用isAuthenticate()函数validation其他请求时,它返回false。 如果我从passport.autheated中删除了中间件函数,那么其他请求将返回true。 但我需要中间件function,因为用户未经过身份validation时返回自定义响应。 请任何一个帮我,我有什么实施错误。

使用Passport js failureRedirect方法发回数据

我有一个Passport js本地注册策略,它使用了successRedirect和failureRedirect方法。 问题是,如果注册过程出现错误,Passport将简单地redirect回registry单,表单中没有数据。 app.post('/signup', passport.authenticate('local-signup', { successRedirect: '/signup/avatar', // redirect to the secure profile section failureRedirect: '/signup', // redirect back to the signup page if there is an error failureFlash: true // allow flash messages })); 我有我的本地注册策略中的以下条件,如果两个提供的密码不匹配,将向用户发送失败消息。 if(req.body.password != req.body.confirm_password){ console.log('Passwords do not match'); return done(null, false, req.flash('signupMessage', 'Your passwords do not match')); } 随着Flash消息,我想发送数据回到/注册路线,并重新填充用户提供的数据的forms。 […]

login使用护照后login用户

用户注册后,我希望他们自动login。我在线阅读使用req.login(),但它似乎并没有工作。 用户被添加到数据库,但没有login。有人可以指向我正确的方向吗? if(type == 'student'){ User.saveStudent(newUser, newStudent, function(err, user){ console.log('Student saved'); req.login(newUser, function(err) { if (err) { console.log(err); } }) }) } else { User.saveInstructor(newUser, newInstructor, function(err, user){ console.log('Instructor saved'); req.login(newUser, function(err) { if (err) { console.log(err); } }); }) } res.redirect('/classes'); } }); module.exports = router;

Express和Passport错误:未知的身份validation策略“login”

我目前正在运行一个简单的testingMEAN堆栈从在线教程利用: Node.js的 Express.js Passport.js 这里是应用程序文件: app.js var express = require("express"); var mongoose = require("mongoose"); var path = require("path"); var bodyParser = require("body-parser"); var cookieParser = require("cookie-parser"); var session = require("express-session"); var flash = require("connect-flash"); var ejs = require("ejs"); var routes = require("./routes"); var app = express(); mongoose.connect("mongodb://localhost:27017/testdb"); app.set("port", process.env.PORT || 3000); app.set("views", path.join(__dirname, "views")); app.set("view […]

PassportJS重命名“用户”对象

我使用PassportJS作为我的loginfunction有没有办法改变请求中的“用户”对象名称? 这是现在它是如何工作的,默认情况下(req.user): function (req, res, next) { if (!req.user) { req.flash('error', 'Please sign in to access this page.'); res.redirect('/login'); } else { next(); } } 我想使用下面的代替(req.candidate): function (req, res, next) { if (!req.candidate) { req.flash('error', 'Please sign in to access this page.'); res.redirect('/login'); } else { next(); } }