无法识别中间件JavaScript
我最近开始自学,我被困在这一点上,无法克服 我正在尝试创建一个登录页面,这是我第一次使用中间件 我收到一个错误:抛出新的TypeError('app.use()需要一个中间件函数') TypeError:app.use()需要一个中间件函数 下面是代码:无法识别中间件JavaScript,javascript,express,mongoose,passport-local,Javascript,Express,Mongoose,Passport Local,我最近开始自学,我被困在这一点上,无法克服 我正在尝试创建一个登录页面,这是我第一次使用中间件 我收到一个错误:抛出新的TypeError('app.use()需要一个中间件函数') TypeError:app.use()需要一个中间件函数 下面是代码: var express = require("express"), mongoose = require("mongoose"), p
var express = require("express"),
mongoose = require("mongoose"),
passport = require("passport"),
bodyParser = require("body-parser"),
User =require("./models/user"),
LocalStrategy =require("passport-local"),
passportLocalMongoose = require("passport-local-mongoose");
mongoose.connect("mongodb://localhost:27017/auth_demo_app", { useUnifiedTopology: true },{ useNewUrlParser: true });
var app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended:true}));
app.use(require("express-session")({
secret: "Neno is the best and cutest dog in the world.",
resave: false,
saveUninitialized: false
}));
app.use(new LocalStrategy(User.authenticate()));
app.use(passport.initialize());
app.use(passport.session());
passport.serializeUser(User.serializeUser()); // Encoding the session
passport.deserializeUser(User.deserializeUser()); // Decoding the session
// =========
// ROUTES
// =========
app.get("/", function(req, res){
res.render("home");
});
app.get("/secret", function(req, res){
res.render("secret");
});
// ===========
// Auth ROUTES
// ===========
// Show Signup Form
app.get("/register", function (req, res){ // req - request / res - response
res.render("register");
});
//handling USER SIGN UP
app.post("/register", function(req, res){
req.body.username
req.body.password
User.register(new User({username: req.body.username}), req.body.password, function(err, user){
if(err) {
console.log(err);
res.render("register");
} else {
passport.authenticate("local")(req, res, function(){
res.redirect("secret");
})
}
});
})
//handling USER LOG IN / LOGIN ROUTES
app.get("/login", function (req, res){
res.render("login");
});
//login logic
//middleware
app.post("/login", passport.authenticate("local", {
successRedirect: "/secret",
failureRedirect: "/login"
}),function(req, res) {
});
app.listen(3000, function (){
console.log("Server Started......");
})
您需要将策略传递给passport,而不是应用程序 替换
app.use(new LocalStrategy(User.authenticate()));
与
另外,我认为您需要传递一个函数
newlocalstrategy(User.authenticate)
,而不是它的结果。当然,除非您实现了它以返回回调(很难说没有看到您的代码)在app.use
的五次调用中,哪一次失败了?给出一个.Helol Yury,passport.use(新的LocalStrategy(User.authenticate());非常感谢,现在可以了:)
passport.use(new LocalStrategy(User.authenticate()));