【发布时间】:2019-03-05 04:34:49
【问题描述】:
我已经使用 express 和 passport js 创建了登录和注册。 我想为错误的密码或电子邮件添加消息。
在我的 index.js (main) 中添加了护照和正文解析器中间件,并引用了路由:
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// route files
let index = require("./routes/index");
let auth = require("./routes/auth");
app.use("/", index);
app.use("/auth", auth);
我创建了护照配置:
const LocalStrategy = require("passport-local").Strategy;
const User = require("../models/User");
const config = require("../config/database");
const bcrypt = require("bcryptjs");
module.exports = function(passport) {
// Local Strategy
passport.use(
new LocalStrategy(
{
usernameField: "email",
passwordField: "password"
},
(username, password, done) => {
// Match Email
let query = { email: username };
User.findOne(query, function(err, user) {
if (err) throw err;
if (!user) {
return done(null, false, { message: "No user found" });
}
// Match Password
bcrypt.compare(password, user.password, function(err, isMatch) {
if (err) throw err;
if (isMatch) {
return done(null, user);
} else {
return done(null, false, { message: "Wrong password" });
}
});
});
}
)
);
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
};
还为它添加了一条路线:
// Login Process
router.post("/login", (req, res, next) => {
passport.authenticate("local", {
successRedirect: "/",
failureRedirect: "/auth/login",
failureFlash: true
})(req, res, next);
});
successRedirect 和 failureRedirect 工作正常,但它没有给我任何错误。我在它的视频中的 youtube 视频上做了它,但在我的代码中它没有。
连接闪存的配置:
const flash = require("connect-flash");
app.use(require("connect-flash")());
【问题讨论】:
标签: node.js express passport.js passport-local