使用Passport.js成功登录后如何刷新用户的用户名?



我正在尝试在用户成功登录网站后向用户闪烁消息"欢迎回来"用户名"。

问题是使用护照登录不是常规请求和响应,身份验证作为 post 请求的参数发生。您可以在下面找到我的代码:

var express = require("express");
var router = express.Router();
var user = require("../models/user");
var passport = require("passport");
router.get('/register', (req,res) =>{
    res.render('register');
});
router.post('/register', (req,res) =>{
    user.register(
        new user({username: req.body.username}),
        req.body.password,
        (err, newUser) => {
            if(err){
                req.flash("error", err.message);
                return res.redirect("/register");
            }
            passport.authenticate("local")(req, res, function(){
                req.flash("success", "Successfully registered, welcome "+user.username.charAt(0).toUpperCase() + user.username.slice(1)+"!");
                res.redirect("/");
            });
        }
    );
});
router.get('/login', (req,res) =>{
    res.render('login');
});
router.post('/login', passport.authenticate("local",{
    successRedirect: "/",
    failureRedirect: "/login",
    failureFlash: true,
    successFlash: 'Welcome back!'//HERE IS WHERE I AM INTERESTED
}), (req,res) =>{
});
router.get('/logout', (req,res) =>{
    req.logout();
    req.flash("success", "Successfully Logged Out")
    res.redirect("/");
});
module.exports = router;
在要

router.post的第二个参数中,调用 passport.authenticate 来处理 failureRedirect 和 failureFlash 消息。然后,对于第三个参数,使用 req 和 res编写回调函数。在此函数的正文中,您将处理"成功"闪光消息,并且您可以访问请求对象上的用户名。然后你可以做你的res.redirect。

router.post(
    "/login",
    passport.authenticate("local", {
        failureRedirect: "/login",
        failureFlash: true
    }),
    (req,res) => {
       req.flash("success", "Welcome back!"//add your username variable here);
       res.redirect("/home");
    });

最新更新