最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

护照本地错误请求

IT培训 admin 15浏览 0评论

护照本地错误请求

我正在尝试在我正在构建的项目中使用通行证js身份验证,我能够在数据库中注册用户,但登录无法正常工作。这是下面的代码

app.js文件

var express = require("express");
var app = express();
var mongoose = require("mongoose");
var passport = require("passport");
var nationalPark = require("./models/NationalParks");
var localStrategy = require("passport-local");
    const User = require("./models/User");
    var expressSession = require("express-session");


//config
mongoose.connect('mongodb://localhost/National_Parks', {useNewUrlParser: true, useUnifiedTopology: true}).catch(function(reason){
    console.log('Unable to connect to the mongodb instance. Error: ', reason);
});
app.set('view engine', 'ejs');
var bod = require("body-parser");
app.use(bod.urlencoded({extended:true}));
app.use(bod.json());

app.use(expressSession({
    secret:"Test Key",
    resave:false,
    saveUninitialized:false
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(function(req,res,next){
    res.locals.currentUser= req.user,
    next();
});

passport.use(new localStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

app.use(express.static(__dirname + '/resources'));


//Routes
app.get("/",function(req,res){
    nationalPark.find({},function(err,nationalParks){
        if(err){
            console.log(err);
        }else{

            res.render("home",{nationalParks:nationalParks});
        }
    })

});

app.get("/home",function(req,res){
    nationalPark.find({},function(err,nationalParks){
        if(err){
            console.log(err);
        }else{

            res.render("home",{nationalParks:nationalParks});
        }
    })
});

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

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

app.post("/profile",function(req,res){
console.log(req.body);
    var username = req.body.username;
    var name = req.body.name;
    var phone = req.body.phone;
    var password = req.body.password;
    var email = req.body.email;
    var confirmpassword = req.body.confirmPassword;

    if(password===confirmpassword){

        User.register({username:username,email:email,name:name,phone:phone},password,function(err,user){

            if(err){
             return   console.log(err);
            }if(!user){
                return res.redirect('/signup');
            }
            req.login(user,function(err){
                if(err){
                    return  console.log(err);
                }
                console.log("reached second");
                res.render("profile",{currentUser:req.user});
            });


        });

    }


});



app.get("/logout",function(req,res){
    nationalPark.find({},function(err,nationalParks){
        if(err){
            console.log(err);
        }else{

            res.render("home",{nationalParks:nationalParks});
        }
    })
});

app.get("/NationalPark",function(req,res){
    console.log(park.park)
 res.render("NationalPark",{park:park.park});
});

app.post("/NationalPark",function(req,res){

      var park_name=req.body.park_name;
      var google_url = req.body.google_url;
    res.render("NationalPark",{park_name:park_name,google_url:google_url});
});

app.get("/post",isLoggedIn,function(req,res){

    nationalPark.find({},function(err,nationalParks){
        if(err){
            console.log(err);
        }else{

            res.render("post",{nationalParks:nationalParks});
        }
    })




});

app.post("/post",passport.authenticate("local"),function(req,res){

        console.log("reached point 1");
        console.log(req.user);

        res.redirect("post",{user:user});





});

function isLoggedIn(req,res,next){
    if(req.isAuthenticated()){

        return next();
    }else{

        console.log(req.User);
        res.redirect("/login");
    }
}

app.post("/post-display",function(req,res){
    console.log(req.body);
    res.render("post-display");
});
app.get("/profile",function(req,res){
    res.render("profile");
});

//listening port
app.listen(3000,function(){
    console.log("Server started");
});

我的User.js文件

var mongoose = require("mongoose");
var passportLocalMongoose = require("passport-local-mongoose");
var post = require("../models/Post").schema;

var user = new mongoose.Schema({
    username:String,
    name:String,
    email:String,
    phoneNumber:String,
    password: String,
    posts:[{ type: mongoose.Schema.Types.ObjectId, ref: 'Post' }]
});

user.plugin(passportLocalMongoose);

module.exports = mongoose.model("User",user);

我的login.ejs页面

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link href=";display=swap" rel="stylesheet">
    <link rel="stylesheet" href=".0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="/css/national-parks.css">


  </head>
  <body id="loginBody">


        <div class="container" id="headContainer">
          <div class="row">
            <div class="col-2">
              <nav class="nav flex-column">
                <a class="nav-link active text-white" href="/login">Login</a>
                <a class="nav-link active text-white" href="/signup">Sign Up</a>
                <a class="nav-link active text-white" href="/post">Add Post</a>
                <a class="nav-link active text-white" href="/logout">Logout</a>
              </nav>
            </div>

            <div class="col-10" id="heading">
              <h1 class="display-3">National Parks Observer</h1>
              <p class="lead">Site Dedicated to Indian National Parks</p>
             </div>



         </div>
        </div>

        <div class="container">
            <div class="row">
                <div class="col-2">

                </div>
                <div class="col-8">
                    <div id="loginCard">
                        <div class="card-body">

                          <form action="/post" method="POST">
                            <h2 class="d-flex justify-content-center text-white" id="loginTitle">LOGIN</h1>
                       <div class="form-group">
                              <input type="text" class="form-control form-control-lg" id="username" placeholder="Username">
                         </div>
                       <div class="form-group">
                           <input type="password" class="form-control form-control-lg" id="password" placeholder="Password">
                       </div>
                       <div class="form-group" id="lastLine">
                          <span class="sublime">  <button type="submit" id="loginSubmit" class="btn btn-primary btn-sm">Submit</button> </span>
                          <span class="sublime float-right"> <a id="loginAnchor" href="/signup" class="d-flex text-white">New User</a> </span> 
                       </div>

                     </form>

                        </div>
                      </div>
                </div>
                <div class="col-2">

                </div>

            </div>
        </div>



        <br>
        <br>
        <br>



    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src=".2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src=".js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src=".0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
  </body>
</html>

我得到的只是我的登录代码上的Bad Request结果,看起来像这样。

app.post("/post",passport.authenticate("local"),function(req,res){

        console.log("r1");
        console.log(req.user);

        res.redirect("post",{user:user});





});

非常感谢您对此的帮助。提前致谢。

关于Sid

回答如下:

您可以以此替换代码

  app.post('/post', (req, res, next) => {
          passport.authenticate('local', {
            failureRedirect: '/login',
            successRedirect: '/anyOtherRoutes',
            failureFlash: true,
        }) (req, res, next);
    });

护照本地错误请求

我正在尝试在我正在构建的项目中使用通行证js身份验证,我能够在数据库中注册用户,但登录无法正常工作。这是下面的代码

app.js文件

var express = require("express");
var app = express();
var mongoose = require("mongoose");
var passport = require("passport");
var nationalPark = require("./models/NationalParks");
var localStrategy = require("passport-local");
    const User = require("./models/User");
    var expressSession = require("express-session");


//config
mongoose.connect('mongodb://localhost/National_Parks', {useNewUrlParser: true, useUnifiedTopology: true}).catch(function(reason){
    console.log('Unable to connect to the mongodb instance. Error: ', reason);
});
app.set('view engine', 'ejs');
var bod = require("body-parser");
app.use(bod.urlencoded({extended:true}));
app.use(bod.json());

app.use(expressSession({
    secret:"Test Key",
    resave:false,
    saveUninitialized:false
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(function(req,res,next){
    res.locals.currentUser= req.user,
    next();
});

passport.use(new localStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());

app.use(express.static(__dirname + '/resources'));


//Routes
app.get("/",function(req,res){
    nationalPark.find({},function(err,nationalParks){
        if(err){
            console.log(err);
        }else{

            res.render("home",{nationalParks:nationalParks});
        }
    })

});

app.get("/home",function(req,res){
    nationalPark.find({},function(err,nationalParks){
        if(err){
            console.log(err);
        }else{

            res.render("home",{nationalParks:nationalParks});
        }
    })
});

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

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

app.post("/profile",function(req,res){
console.log(req.body);
    var username = req.body.username;
    var name = req.body.name;
    var phone = req.body.phone;
    var password = req.body.password;
    var email = req.body.email;
    var confirmpassword = req.body.confirmPassword;

    if(password===confirmpassword){

        User.register({username:username,email:email,name:name,phone:phone},password,function(err,user){

            if(err){
             return   console.log(err);
            }if(!user){
                return res.redirect('/signup');
            }
            req.login(user,function(err){
                if(err){
                    return  console.log(err);
                }
                console.log("reached second");
                res.render("profile",{currentUser:req.user});
            });


        });

    }


});



app.get("/logout",function(req,res){
    nationalPark.find({},function(err,nationalParks){
        if(err){
            console.log(err);
        }else{

            res.render("home",{nationalParks:nationalParks});
        }
    })
});

app.get("/NationalPark",function(req,res){
    console.log(park.park)
 res.render("NationalPark",{park:park.park});
});

app.post("/NationalPark",function(req,res){

      var park_name=req.body.park_name;
      var google_url = req.body.google_url;
    res.render("NationalPark",{park_name:park_name,google_url:google_url});
});

app.get("/post",isLoggedIn,function(req,res){

    nationalPark.find({},function(err,nationalParks){
        if(err){
            console.log(err);
        }else{

            res.render("post",{nationalParks:nationalParks});
        }
    })




});

app.post("/post",passport.authenticate("local"),function(req,res){

        console.log("reached point 1");
        console.log(req.user);

        res.redirect("post",{user:user});





});

function isLoggedIn(req,res,next){
    if(req.isAuthenticated()){

        return next();
    }else{

        console.log(req.User);
        res.redirect("/login");
    }
}

app.post("/post-display",function(req,res){
    console.log(req.body);
    res.render("post-display");
});
app.get("/profile",function(req,res){
    res.render("profile");
});

//listening port
app.listen(3000,function(){
    console.log("Server started");
});

我的User.js文件

var mongoose = require("mongoose");
var passportLocalMongoose = require("passport-local-mongoose");
var post = require("../models/Post").schema;

var user = new mongoose.Schema({
    username:String,
    name:String,
    email:String,
    phoneNumber:String,
    password: String,
    posts:[{ type: mongoose.Schema.Types.ObjectId, ref: 'Post' }]
});

user.plugin(passportLocalMongoose);

module.exports = mongoose.model("User",user);

我的login.ejs页面

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link href=";display=swap" rel="stylesheet">
    <link rel="stylesheet" href=".0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="/css/national-parks.css">


  </head>
  <body id="loginBody">


        <div class="container" id="headContainer">
          <div class="row">
            <div class="col-2">
              <nav class="nav flex-column">
                <a class="nav-link active text-white" href="/login">Login</a>
                <a class="nav-link active text-white" href="/signup">Sign Up</a>
                <a class="nav-link active text-white" href="/post">Add Post</a>
                <a class="nav-link active text-white" href="/logout">Logout</a>
              </nav>
            </div>

            <div class="col-10" id="heading">
              <h1 class="display-3">National Parks Observer</h1>
              <p class="lead">Site Dedicated to Indian National Parks</p>
             </div>



         </div>
        </div>

        <div class="container">
            <div class="row">
                <div class="col-2">

                </div>
                <div class="col-8">
                    <div id="loginCard">
                        <div class="card-body">

                          <form action="/post" method="POST">
                            <h2 class="d-flex justify-content-center text-white" id="loginTitle">LOGIN</h1>
                       <div class="form-group">
                              <input type="text" class="form-control form-control-lg" id="username" placeholder="Username">
                         </div>
                       <div class="form-group">
                           <input type="password" class="form-control form-control-lg" id="password" placeholder="Password">
                       </div>
                       <div class="form-group" id="lastLine">
                          <span class="sublime">  <button type="submit" id="loginSubmit" class="btn btn-primary btn-sm">Submit</button> </span>
                          <span class="sublime float-right"> <a id="loginAnchor" href="/signup" class="d-flex text-white">New User</a> </span> 
                       </div>

                     </form>

                        </div>
                      </div>
                </div>
                <div class="col-2">

                </div>

            </div>
        </div>



        <br>
        <br>
        <br>



    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src=".2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
    <script src=".js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src=".0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>
  </body>
</html>

我得到的只是我的登录代码上的Bad Request结果,看起来像这样。

app.post("/post",passport.authenticate("local"),function(req,res){

        console.log("r1");
        console.log(req.user);

        res.redirect("post",{user:user});





});

非常感谢您对此的帮助。提前致谢。

关于Sid

回答如下:

您可以以此替换代码

  app.post('/post', (req, res, next) => {
          passport.authenticate('local', {
            failureRedirect: '/login',
            successRedirect: '/anyOtherRoutes',
            failureFlash: true,
        }) (req, res, next);
    });

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论