Tag: passport.js

成功login后,Azureauthentication返回到login页面 – node.js

我有一个node.js应用程序,并将其上传到Azure。 我已经将Active Directory支持包括在我们的应用程序中。 使用高级选项,我已经设置客户端ID和所需的细节到应用程序。 在Node.js应用程序中,我使用passport-azure-ad来validation用户。 我已经configuration了客户端ID,秘密,返回url等,我用下面的get方法来调用蔚蓝authentication。 app.get('/login', passport.authenticate('azuread-openidconnect', { failureRedirect: '/hello' }), function(req, res){ res.sendFile(path.join(__dirname+'/views/index.html')); }); 当我部署代码并在Azure中运行它时,它首先将我带到azure色的login页面,一旦input正确的电子邮件和密码,它就会再次将我redirect到login页面。 它也没有抛出任何错误。 请帮忙避免这个redirect到login页面的循环过程。 提前致谢。

400(坏请求)使用获取login

我正在尝试使用抓取到POSTlogin表单我的loginfunction使用护照。 当使用标准表单action =“/ login”时,login工作,但是我想要去取得能够显示实时错误输出,如果login失败,不刷新… 我得到400(坏请求)和Uncaught(在诺言)SyntaxError:意外的标记B在JSON在位置0时发送login请求… 这是我的代码: let payload = { username: "user1@user1.se", password: "superman123" }; let data = new FormData(); data.append( "json", JSON.stringify( payload ) ); console.log(data); fetch('/login', { method: 'post', body: data }).then(function(response) { // if (response.status >= 400) { // throw new Error("Bad response from server"); // } return response.json(); }) .then(function(data) { […]

使用mongodb和nodejs对passportjs中的多个本地策略进行授权

我正在使用nodejs中的passportjs和mongodb实现多个本地策略。 为了实现身份validation,我在deserializeUser中使用了中间件。 像这样的东西。 我有两种types的用户,一个是用户,另一个是供应商。 供应商将销售产品,用户将购买产品。 我为不同的本地策略名称为供应商和用户创build了不同的模式。 validation对我来说工作正常。 module.exports = function(passport){ // Passport needs to be able to serialize and deserialize users to support persistent login sessions passport.serializeUser(function(user, done) { console.log('user id is: ' + user._id); done(null, user._id); }); passport.deserializeUser(function(id, done) { User.findById(id, function (err, user) { if(err) done(err); if(user) { done(null, user); } else { […]

如何用安全的REST API开发一个安全的Node.js WebApp?

为Web用户创buildExpress/Passport WebApp并在一个项目中使用jsonwebtoken授权保护REST API是否是一个好习惯? 我现在有一个WebApp, local-passportlogin和一些HTML视图的受保护的端点。 我可以使用jsonwebtoken保护添加passport-local未受保护的REST端点,但使用两个不同的身份validation选项似乎是一种不好的做法。 这是我的第一个Node.js项目,所以我不知道。 没有更好的方法来创build我想创build的东西吗?

持续loginPassport.js不再有效。 isAuthenticated返回false

我有这个代码在某种程度上工作,一定是在一些粗心大意的保存中丢失了它。 我试图实现持护照login,但似乎并没有这样做,因为我在isAuthentiacted中间件false 。 这是我的主server.js设置,你可以看到订单是好的。 但是我不确定cookie设置,因为我是新手。 app.use(cookieParser('S3CRE7')); app.use(bodyParser.json()); app.use(session({ key: 'express.sid', resave: false, saveUninitialized: false, maxAge: 3000})); app.use(passport.initialize()); app.use(passport.session()); app.use('/users/', usersRouter); app.use('/transcriptions', transRouter); app.use(express.static('public')); const basicStrategy = new BasicStrategy(function(username, password, callback) { let user; User .findOne({username: username}) .exec() .then(_user => { user = _user; if (!user) { return callback(null, false, {message: 'Incorrect username'}); } return user.validatePassword(password); […]

当我使用passeport.authenticate()时,标题消失

我从node.js,express.js和passport.js开始。 我尝试使用passport-jwt。 我已经成功logging并获取我的令牌,但是当我使用passport.authenticate() ,标题消失,我无法检查令牌。 当我不使用passport.authenticate()时,我清楚地得到标题。 这是关于passport-jwtauthentication的所有代码(如果我用req.header.authorization来代替req.header.authorization ,这个代码可以工作): const express = require('express') const app = express() const bodyParser = require('body-parser') const users = require("./users.js") const jwt = require("jsonwebtoken") const passport = require("passport") const http = require("http") const notes = require('./notes') const passportJWT = require("passport-jwt") const ExtractJwt = passportJWT.ExtractJwt const JwtStrategy = passportJWT.Strategy app.use(bodyParser.json()) app.all('*', function(req, res, […]

如何使用蓝鸟承诺将parameter passing给护照策略callback?

我正在努力promisify passport.js的本地策略 。 我对诺言和护照都很陌生,而且我非常依赖这个评论线程 ,它使用蓝鸟的Promise库来传递额外的参数给passport的done()callback函数。 这个评论导致了一个新的蓝鸟实现处理额外的callback参数,但我不能让它在我自己的代码中工作: const passport = require('passport'); const User = require('../models/user'); const LocalStrategy = require('passport-local'); const NoMatchedUserError = require('../helpers/error_helper').NoMatchedUserError; const NotActivatedError = require('../helpers/error_helper').NotActivatedError; const localOptions = { usernameField: 'email' }; const localLogin = new LocalStrategy(localOptions, function(email, password, done) { let user; User.findOne({ email: email }).exec() .then((existingUser) => { if (!existingUser) { throw […]

encryption与护照和mongoose的错误

Bcrypt抛出一个Incorrect arguments错误,我追溯到user.js这个函数 userSchema.methods.comparePassword = (candidatePassword, callback) => { bcrypt.compare(candidatePassword, this, (err, isMatch) => { console.log('candidatePassword= ', candidatePassword, '& this= ', this); if (err) { return callback(err); } callback(null, isMatch); }); }; /* candidatePassword= bird this= {} this.password= undefined */ 用户对象回来作为一个空的对象,因此this.password是未定义的。 我假设bcrypt.compare中的this参数指向了userSchema实例。 userSchema在passport.js声明 const passport = require('passport'); const ExtractJwt = require('passport-jwt').ExtractJwt; const JwtStrategy = require('passport-jwt').Strategy; const […]

护照facebook战略投掷数据必须是使用Node.js的string

我正在使用Node.js和passport facebook strategy来login客户端的应用程序。 我跟着护照文件,但仍然有一个错误: 数据必须是一个string或缓冲区 。 策略redirect到Facebook页面,但testing后接受应用程序的条件,它redirect到主页,应用程序抛出此错误: StatusCodeError: 500 – {"error":"Data must be a string or a buffer"} 这是我写代码的auth.js代码。 我正在使用jsonwebtoken模块来签署用户ID。 exports.facebookStrategy = new FacebookStrategy({ clientID: config.auth.facebook.clientID, clientSecret: config.auth.facebook.clientSecret, callbackURL: config.auth.facebook.callbackURL, profileFields: ['id', 'displayName', 'email'] }, function (accessToken, refreshToken, profile, done) { var userProfile = { username: profile._json.id, name: profile._json.name, email: profile._json.email, facebook: true } findOrCreate(userProfile, […]

如何在Express中间件中使用next()内passport.authenticate(…)?

我有一个简单的护照设置与我的login路线local策略。 我不知道如何正确使用身份validationfunction作为中间件。 这是我在控制器之前调用/login路由的中间件: exports.requireLogin = (req, res, next) => { passport.authenticate('local', { session: false }, (err, user, info) => { if (err) { next(err); } else if (!user) { res.status(401).json(info.message); } else { req.login(user, (loginError) => { if (loginError) { console.log('error here'); next(new Error('test')); } else { next(); } }); } })(req, res, next); }; […]