Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js req,authenticate()仅在登录时返回true,然后自动变为false_Node.js_Reactjs_Mongodb_Express_Passport.js - Fatal编程技术网

Node.js req,authenticate()仅在登录时返回true,然后自动变为false

Node.js req,authenticate()仅在登录时返回true,然后自动变为false,node.js,reactjs,mongodb,express,passport.js,Node.js,Reactjs,Mongodb,Express,Passport.js,使用React axios并将用户名和密码发送到后端(节点)。 req,authenticate()仅在登录时返回true,然后自动变为false 使用名为checkAuth的新get请求检查用户是否已通过身份验证,并检查req.isAuthenticated()是否为true或false 如果用户凭据与数据库库中的数据匹配,则登录post请求将使req.isAuthenticated为true,但当从checkAuth get请求进行检查时,其返回false 这是后端的代码 require(&

使用React axios并将用户名和密码发送到后端(节点)。 req,authenticate()仅在登录时返回true,然后自动变为false

使用名为checkAuth的新get请求检查用户是否已通过身份验证,并检查req.isAuthenticated()是否为true或false

如果用户凭据与数据库库中的数据匹配,则登录post请求将使req.isAuthenticated为true,但当从checkAuth get请求进行检查时,其返回false

这是后端的代码

require("dotenv").config();
const express = require("express");
const app = express();
const https = require("https");
const cors = require("cors");
const bodyParser = require("body-parser");
const cookieParser = require("cookie-parser");
const mongoose = require("mongoose");
const multer  = require("multer");
const session = require("express-session");
const passport = require("passport");
const passportLocal = require("passport-local");
const passportLocalMongoose = require("passport-local-mongoose");

const storage = multer.diskStorage({
    destination: function(req, file, cb){
        cb(null, "../frontend/public/images");
    },
    filename: function(req, file, cb){
        cb(null, Date.now()+"-image-"+file.originalname);
    }
});
var upload = multer({
    storage: storage,
    fileFilter: (req, file, cb) => {
        if (file.mimetype == "image/png" || file.mimetype == "image/jpg" || file.mimetype == "image/jpeg" || file.mimetype == "video/mp4") {
        cb(null, true);
        } else {
        cb(null, false);
        return cb(new Error('Only .png, .jpg and .jpeg format allowed!'));
        }
    }
});

const mongoose_Url = "mongodb+srv://"+process.env.Mongoose_Username+":"+process.env.Mongoose_Password+"@cluster0.g55a6.mongodb.net/databaseName";

mongoose.connect(mongoose_Url, {useNewUrlParser: true, useUnifiedTopology: true});

// mongoose.connect('mongodb://localhost:27017/photoFile', {useNewUrlParser: true, useUnifiedTopology: true});

mongoose.set("useCreateIndex", true);

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(
  cors({
    origin: "http://localhost:3000", // <-- location of the react app were connecting to
    // credentials: true,
  })
);

app.use(session({
    secret: process.env.secret,
    resave: false,
    saveUninitialized: false,
  maxAge: 24*60*60*1000
}));

app.use(cookieParser("secretcode"));
app.use(passport.initialize());
app.use(passport.session());


// mongoose.connect(mongoose_Url, {useNewUrlParser: true, useUnifiedTopology: true});

// // mongoose.connect('mongodb://localhost:27017/photoFile', {useNewUrlParser: true, useUnifiedTopology: true});

// mongoose.set("useCreateIndex", true);

const messageSchema = new mongoose.Schema({
  name: {
    type: String,
    required: [true, "Please add the your name"]
  },
  email: {
    type: String,
    required: [true, "Please add the your email"]
  },
  contactno:{
    type: String
  },
  message:{
    type: String,
    required: [true, "Please add the your email"]
  },
  dateTime: {
    type: String
  }
});
const adminSchema = new mongoose.Schema({
    username: {
        type: String,
        required: [true, "Please add your username"]
    },
    password: {
        type: String
    }
});
const subscriberSchema = new mongoose.Schema({
    email: {
        type: String,
        required: [true, "Please add your email"]
    }
});
const blogSchema = new mongoose.Schema({
  blogTitle:{
    type: String,
    required: [true, "blog title missing"]
  },
  blogImage:{
    type: String
  },
  blogVideo: {
    type: String
  },
  blogContent:{
    type: String,
    required: [true, "blog content missing"]
  },
  blogAuthor:{
    type: String
  }
});
const gallerySchema = new mongoose.Schema({
  picture: String
});

adminSchema.plugin(passportLocalMongoose);

const Admin = mongoose.model("Admin", adminSchema);
const Subscriber = mongoose.model("Subscriber", subscriberSchema);
const Message = mongoose.model("Message", messageSchema);
const Blog = mongoose.model("Blog", blogSchema);
const Gallery = mongoose.model("Gallery", gallerySchema);


passport.use(Admin.createStrategy());

passport.serializeUser(Admin.serializeUser());
passport.deserializeUser(Admin.deserializeUser());

app.get("/checkAuth", function(req,res){
  //console.log("req.user: "+req.user);
  console.log("check Authentication Route:  "+req.isAuthenticated());
  if(req.isAuthenticated()){
        res.send(req.isAuthenticated());
  }
  else{
        res.send(false);
  }
});
app.get("/logout", function(req,res){
  req.logout();
  res.send("Successfully Logged Out");
  console.log("Logout Access: "+req.isAuthenticated());
});

app.post("/admin-register", function(req, res){
  console.log(req.body);
  Admin.register({username: req.body.username, active: false}, req.body.password, function(err, user) {
      if (err) { 
          console.log(err);
      }
      else{
          var authenticate = Admin.authenticate();
          authenticate(req.body.username, req.body.password, function(err, result) {
              if (err) {
                  console.log(err);
              }
              else{
                  console.log(result);
              }
          
              // Value 'result' is set to false. The user could not be authenticated since the user is not active
          });
          res.send("Successfully Registered")
      }
  });
});

app.post("/admin-login", function(req, res, next){
  console.log(req.body);
  passport.authenticate("local", (err, user, info)=>{
    if(err) throw err;
    if(!user) {
      res.send("User not found");
      accessStatus = req.isAuthenticated();
    }
    else{
      req.login(user, err=>{
        if(err) throw err;
        res.send("Succesfully Authenticated");
        accessStatus = req.isAuthenticated();
        console.log("isAuth Status: "+req.isAuthenticated());
      });
    }
    // console.log("Error "+err);
    // console.log("Info: "+info);
    // console.log("User: "+user);
  })(req, res, next);
});


app.listen(process.env.PORT || 5000, function(){
    console.log("App listening on Port 5000");
})
require(“dotenv”).config();
const express=要求(“express”);
常量app=express();
const https=require(“https”);
const cors=要求(“cors”);
const bodyParser=require(“body parser”);
const cookieParser=require(“cookie解析器”);
const mongoose=需要(“mongoose”);
const multer=要求(“multer”);
const session=需要(“快速会话”);
const passport=需要(“护照”);
const passportLocal=需要(“passport local”);
const passport localmongoose=require(“passport localmongoose”);
const storage=multer.diskStorage({
目标:功能(请求、文件、cb){
cb(空,“../frontend/public/images”);
},
文件名:函数(请求、文件、cb){
cb(null,Date.now()+“-image-”+file.originalname);
}
});
var upload=multer({
存储:存储,
fileFilter:(请求、文件、cb)=>{
如果(file.mimetype==“image/png”| | file.mimetype==“image/jpg”| | | file.mimetype==“image/jpeg”| | file.mimetype==“video/mp4”){
cb(null,true);
}否则{
cb(空,假);
返回cb(新错误('Only.png、.jpg和.jpeg格式允许!'));
}
}
});
const mongoose_Url=“mongodb+srv:/”+process.env.mongoose_Username+”:“+process.env.mongoose_Password+”@cluster0.g55a6.mongodb.net/databaseName”;
connect(mongoose_Url,{useNewUrlParser:true,useUnifiedTopology:true});
//猫鼬mongodb://localhost:27017/photoFile“,{useNewUrlParser:true,useUnifiedTopology:true});
set(“useCreateIndex”,true);
use(bodyParser.json());
app.use(bodyParser.urlencoded({
扩展:正确
}));
应用程序使用(
科尔斯({
来源:“http://localhost:3000", // {
如果(错误)抛出错误;
如果(!用户){
res.send(“未找到用户”);
accessStatus=req.isAuthenticated();
}
否则{
请求登录(用户,错误=>{
如果(错误)抛出错误;
res.send(“成功认证”);
accessStatus=req.isAuthenticated();
log(“isAuth状态:+req.isAuthenticated());
});
}
//console.log(“错误”+err);
//console.log(“Info:+Info”);
//console.log(“用户:“+User”);
})(req、res、next);
});
app.listen(process.env.PORT | | 5000,函数(){
console.log(“端口5000上的应用程序侦听”);
})