我正在尝试从用户登录后获取数据,我从前端提交用户名和密码,它成功将数据发送到服务器,并且护照成功重定向到我指定的路由。我的问题是如何获取用户数据,示例用户名,个人资料图片等,以便可以在每个页面上访问他的数据并省略登录按钮。
护照
const passport = require("passport");
const LocalStrategy = require("passport-local").Strategy;
const UserSchema = require("../model/schemas/user.schema");
const config = require("../config/database.js");
const bcrypt = require("bcrypt");
module.exports = (password) => {
// Local strategy
passport.use(new LocalStrategy((username, password, done) => {
let query = {username: username};
UserSchema.findOne(query, (err, user) => {
if(err) throw err;
if(!user){
return done(null, false, {message: "Nome de utilizador errado!"})
}
// Compare password
bcrypt.compare(password, user.password, (err, isMatch) => {
if(err) throw err;
if(isMatch) {
return done(null, user);
} else {
return done(null, false, {message: "Password incorreta!"});
}
})
})
}));
passport.serializeUser(function(user, done) {
done(null, user.id);
});
passport.deserializeUser(function(id, done) {
UserSchema.findById(id, function(err, user) {
done(err, user);
});
});
}
我需要的用户控制器部分
static loginUser(req, res, next){
console.log(req.body)
passport.authenticate("local", {
successRedirect: "/",
failureRedirect: "/forum",
failureFlash: true
})(req, res, next);
}
路线
const express = require("express");
const router = express.Router();
const UserController = require("../controller/user.controller");
router.get('/', UserController.returnUsers);
router.post('/register', UserController.registerUser);
router.post("/login", UserController.loginUser);
module.exports = router;
在线观看
login() {
axios.post("http://localhost:3000/login", {
username: this.form.username,
password: this.form.password
});
},
app.js
require("./config/passport")(passport);
// Passport middleware
app.use(passport.initialize());
app.use(passport.session());
app.get("*", (req, res, next) => {
res.locals.user = req.user || null;
next();
})