По курсу https://ide.c9.io/learnwithcolt/webdevbootcamp
Аутентификация - папка AuthDemo
Мой код:
var express = require("express"),
mongoose = require("mongoose"),
passport = require("passport"),
bodyParser = require("body-parser"),
LocalStrategy = require("passport-local"),
passportLocalMongoose = require("passport-local-mongoose"),
User = require("./models/user")
mongoose.connect("mongodb://localhost/auth_demo_app");
var app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({extended: true}));
app.use(require("express-session")({
secret: "This is my secret sentence",
resave: false,
saveUninitialized: false
}));
app.use(passport.initialize());
app.use(passport.session());
passport.use(new LocalStrategy(User.authenticate()));
passport.serializeUser(User.serializeUser());
passport.deserializeUser(User.deserializeUser());
//=========
// ROUTES
//=========
app.get("/", function(req, res){
res.render("home");
});
app.get("/secret", function(req, res){
res.render("secret");
})
//AUTH ROUTES
//show signup form
app.get("/register", function(req, res){
res.render("register") ;
});
//handling user sign up
app.post("/register", function(req, res){
req.body.username
req.body.password
User.register(new User({username: req.body.username}), req.body.password, function(err, user){
if(err){
console.log(err);
return res.render("register");
}
passport.authenticate("local")(req, res, function(){
res.render("./secret");
});
});
});
//LOGIN ROUTES
//render login form
app.get("/login", function(req, res) {
res.render("login");
}),
//login logic
//middleware
app.post("/login", passport.authenticate("local", {
succesRedirect: "./secret",
failureRedirect: "/login"
}), function(req, res){
});
app.listen(process.env.PORT, process.env.IP, function() {
console.log("The AuthDemo Server has started!");
});
Маршруты входа в систему работают нормально, если имя пользователя +неверный пароль, приложение перенаправляет заново к форме входа.
Но если имя пользователя + пароль в порядке, браузер останавливается и продолжает говорить «Ожидание», пока не отобразится этот код:
<html>
<head>
<meta charset='utf-8'>
<title>Error 502 - Bad Gateway</title>
<link rel="stylesheet" type="text/css" href="https://cdn.c9.io/errors/style.css" />
<style type="text/css">
.error_content {
background: rgba(255, 255, 255, 0.23);
padding: 10px;
width: 641px;
margin: 25px 0;
display: none;
}
#error-msg {
display: block;
}
</style>
</head>
<body class="errorUnknown light">
<div id="wrapper">
<h1>Error 502 - Bad Gateway</h1>
<div class="error_content" id="error-msg">
<p>Please click <a href="javascript:location.reload(true)">here</a> to try again, if the issue persists please contact <a href="https://c9.io/support">support</a></p>
</div>
<a href="http://status.c9.io">Status Page</a> |
<a href="https://c9.io/support">Support</a> |
<a href="https://c9.io/dashboard.html">Dashboard</a> |
<a href="https://c9.io">Home</a>
</div>
</body>
</html>
Может, оригинал кода устарел?Или мне нужно использовать конкретную версию паспорта?
Модель пользователя
var mongoose = require("mongoose");
var passportLocalMongoose = require("passport-local-mongoose")
var UserSchema = new mongoose.Schema({
username: String,
password: String
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", UserSchema);