【问题标题】:Passport LocalStrategy never called on ExpressPassport LocalStrategy 从未调用过 Express
【发布时间】:2021-01-08 14:35:49
【问题描述】:

我在 LocalStrategy 回调中编写了 console.log,但它从未调用过。我将 Sequelize 用于 ORM (MySQL)。

passport.js

const LocalStrategy = require('passport-local').Strategy
const passport = require('passport')
const bcrypt = require('bcrypt')
const UrunModel = require('../models/Urun')

console.log('File is Called') // If my require is wrong. But this log worked.    

passport.use(new LocalStrategy({
    usernameField: 'mail',
    passwordField: 'pw1'
},
    (username, password, done) => {
      console.log('Worked!') // Never Called
      UrunModel.findOne({
          where : {
              UrunName : 'testuser',
              UrunDesc : '123456'
          }
      })
    }
));

passport.serializeUser(function(user, done) {
    done(null, user.id);
  });
  
  passport.deserializeUser(function(id, done) {
    User.findById(id, function(err, user) {
      done(err, user);
    });
  });

index.js

const session = require('express-session');
const bodyParser = require('body-parser')
const urlencoded = bodyParser.urlencoded({extended:false})
const passport = require('passport')

app.use(session({
  secret: 'keyboardSecrIncKey',
  resave: false,
  saveUninitialized: true,
}))

app.use(passport.initialize())
app.use(passport.session())

require('./config/passport') //require my passport.js

app.post('/test',(req,res,next) => {
  passport.authenticate('local',{
    successRedirect: '/worked',
    failureRedirect: '/notworked'
  })(req,res,next)
})

它重定向我'/notworked' url。我观看了 3 或 4 个视频,但我的代码几乎相同。

我在哪里失败了?请解释我的错。

【问题讨论】:

    标签: javascript node.js express passport.js passport-local


    【解决方案1】:

    默认情况下,LocalStrategy 期望在名为用户名和密码的参数中找到凭据。如果您的网站希望以不同的方式命名这些字段,则可以使用选项来更改默认值。

    你使用mailpw1参数,检查req.body,因为req.body在body中没有这个参数。

    如果您更换,您的问题将得到解决

    {
        usernameField: 'mail',
        passwordField: 'pw1'
    }
    

    {
        usernameField: 'username',
        passwordField: 'password'
    }
    

    您也可以查看documentation

    【讨论】:

      【解决方案2】:

      已解决:

      有空字段时不调用LocalStrategy(usernameField & passwordField)

      【讨论】:

        猜你喜欢
        • 2019-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-16
        • 2015-03-24
        • 2015-11-19
        • 2013-02-07
        • 1970-01-01
        相关资源
        最近更新 更多