gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:14:28 25 4
gpt4 key购买 nike

我正在尝试在用户成功登录网站后向他们发送消息“欢迎回来‘用户名’”。

问题是使用 Passport 登录不是常规的请求和响应,身份验证作为 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");
});

关于javascript - 如何在使用 Passport.js 成功登录后刷新用户的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57040931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com