簡體   English   中英

Passport LocalStrategy 從未調用過 Express

[英]Passport LocalStrategy never called on Express

我在 LocalStrategy 回調中寫了 console.log 但它從未調用過。 我將 Sequelize 用於 ORM (MySQL)。

護照.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 個視頻,但我的代碼幾乎相同。

我哪里失敗了? 請解釋我的錯。

默認情況下,LocalStrategy 期望在名為 username 和 password 的參數中找到憑據。 如果您的站點希望以不同的方式命名這些字段,則可以使用選項來更改默認值。

你使用mailpw1參數,檢查req.body ,因為req.body在正文中沒有這個參數。

如果您更換,您的問題將得到解決

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

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

您也可以查看文檔

解決了:

有空字段時不調用 LocalStrategy(用戶名字段和密碼字段)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM