簡體   English   中英

實施護照,收到不好的要求

[英]Implementing passport, getting bad request

我正在嘗試通過在node.js應用程序上使用passport.js來實現身份驗證,但是得到一個

錯誤的請求

當我發布到/ login時返回。

我已經測試過該路線,並且效果很好,但是每次插入passport.authenticate()時都會收到此錯誤請求錯誤。

我錯過了什么?

這是我的代碼

server.js

 const express = require("express"); const app = express(); const bp = require("body-parser"); const User = require("./db").user; const Investment = require("./db").investment; const spending = require("./db").spendings; const reminder = require("./db").reminder; const session = require("express-session"); const passport = require('passport'); const flash = require("connect-flash"); const LocalStrategy = require("passport-local").Strategy; require("./config/passport")(passport); app.use("/", express.static(__dirname + "/Public_static")); app.use(bp.urlencoded({ extended: true })); app.use(bp.json()); //Passport Authentication Implementation app.use(session({ secret: "keyboard cat", resave: true, saveUninitialized: true })); // session secret app.use(passport.initialize()); app.use(passport.session()); // persistent login sessions app.use(flash()); app.post("/login", passport.authenticate("local"), function(req, res) { User.findOne({ where: { email: req.body.username } }) .then(function(user) { console.log(user); user._modelOptions.classMethods.test(); }) .catch(function(err) { console.log(err); }); }); app.listen(3100, function() { console.log("Server started on http://localhost:3100"); }); 

/config/passport.js

 const User = require("../db").user; const LocalStrategy = require("passport-local").Strategy; module.exports = function(passport) { passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findOne({where:{id:id}}) }); passport.use(new LocalStrategy( { passReqToCallback: true // allows us to pass back the entire request to the callback }, (req, username, password, done) => { User.findOne({where: { username: username }}) .then((user)=>{ console.log("User found") }) .catch(()=>{ console.log(err) }) } ) ); }; 

您可以嘗試將password.js文件更改為:

const User = require("../db").user;
const LocalStrategy = require("passport-local").Strategy;
const Promise = require("bluebird");

module.exports = function(passport) {

    passport.serializeUser((user, done) => done(null, user.id));

    passport.deserializeUser((id, done) =>
        Promise.try(() => User.findById(id))
            .asCallback(done)
    );

    passport.use(new LocalStrategy(
            {
                passReqToCallback: true // allows us to pass back the entire request to the callback
            },
            (req, username, password, done) => {
                User.findOne({where: { username: username }})
                .then(user =>{
                    console.log("User found")
                    return done(null, user, {message: 'User found!'});
                })
                .catch(err => {
                    console.log(err)
                    return done('Unauthorized', false, {message: err.message});
                })
            }
        )
    );


};

暫無
暫無

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

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