如何找到错误passport-local-mongoose?

问题描述

我使用 MERN 堆栈,并且在身份验证中我想使用passport-local-mongoose。但是在我的代码中我找不到错误。请帮我我试过这个问题。 登录注册后,我想知道 /current 这条路线中的 req.user。

require('dotenv').config();
const express = require("express");
const bodyParser = require("body-parser");
const mongoose = require("mongoose");
const session = require('express-session');
const passport = require("passport");
const passportLocalMongoose = require("passport-local-mongoose");
const cors = require('cors');

const app = express();


app.use(cors({
    origin: 'http://localhost:3000',credentials: true
}));
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(bodyParser.json());

app.use(session({
  secret: "Our little secret.",resave: false,saveUninitialized: false
}));

app.use(passport.initialize());
app.use(passport.session());

mongoose.connect("mongodb://localhost:27017/QuizApp",{useNewUrlParser: true,useCreateIndex:true,useUnifiedTopology:true});


const userSchema = new mongoose.Schema ({
  username: String,password: String,});

userSchema.plugin(passportLocalMongoose);

const User = new mongoose.model("User",userSchema);

passport.use(User.createStrategy());

passport.serializeUser(function(user,done) {
  done(null,user.id);
});

passport.deserializeUser(function(id,done) {
  User.findById(id,function(err,user) {
    done(err,user);
  });
});




app.get("/logout",function(req,res){
  req.logout();
});

app.post("/register",res){

  User.register({username: req.body.username},req.body.password,user){
    if (err) {
      console.log(err);
    } else {
      passport.authenticate("local")(req,res,function(){
      });
    }
  });

});

app.post("/login",res){

  const user = new User({
    username: req.body.username,password: req.body.password
  });

  req.login(user,function(err){
    if (err) {
      console.log(err);
    } else {
      passport.authenticate("local")(req,function(){
        console.log("ish bitdi");
    });
    }
  });

});

app.get('/current',(req,res) => {
  res.send(req.user);
});

app.listen(3001,function() {
  console.log("Server started on port 3001.");
});

这是我的 axios 发送代码。我使用 dispatch react-redux

import { USER_LOGIN_FAIL,USER_LOGIN_REQUEST,USER_LOGIN_SUCCESS,USER_REGISTER_FAIL,USER_REGISTER_REQUEST,USER_REGISTER_SUCCESS } from "../constants/all";
import axios from "axios";

const user_Register = (email,password) => async (dispatch) =>{
    dispatch({ type: USER_REGISTER_REQUEST });
    try {
        const {data} = await axios( {
            method: "POST",data: {
                "username": email,"password": password
            },withCredentials: true,url: "http://localhost:3001/register"
        });  
        
        dispatch({ type: USER_REGISTER_SUCCESS,payload: data });

    } catch (error) {
        dispatch({type: USER_REGISTER_FAIL,error: error.message});
    }
}

const user_Login = (email,password) => async (dispatch) =>{
    dispatch({ type: USER_LOGIN_REQUEST });
    try {
        const {data} = await axios( {
            method: "POST",url: "http://localhost:3001/login"
        });  
        dispatch({ type: USER_LOGIN_SUCCESS,payload: data });
    } catch (error) {
        dispatch({type: USER_LOGIN_FAIL,error: error.message});
    }
}

export {user_Register,user_Login};

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)