所以我最終試圖在節點中創建一個登錄頁面。如果一個人試圖去一個不同的位置開始,他們應該被路由到登錄頁面。如何通過Node.JS創建經過身份驗證的登錄?
我使用「/」作爲重定向到「/ login /」。 「/ login /」包含輸入用戶名/密碼的表單。一旦他們輸入信息,然後路由回「/」。
遇到一些問題。如果我排除了原始URL爲「/」並且某人轉到「/ login /」時重定向的代碼,那麼他們可以填寫表單並重定向。
如果我保留重定向的代碼,它會自動重定向到登錄頁面,然後由於重定向而重新加載到登錄頁面。這是一個奇怪的循環,我無法擺脫。我知道我可以把「/ login /」放在另一端,但我想保留它「/」。
關於修復重定向循環的任何想法?編輯:所以我知道問題是什麼。我不存儲比較(不使用會話)。任何有關用於檢查會話的最佳中間件的線索?
如何添加身份驗證甚至添加用戶名/密碼到數據結構?
下面是代碼,我想出了:
const express = require("express"); //Express
const path = require ("path");
const session = require("express-session"); //Express Session
const app = express();
const mustache = require ("mustache");
const mustacheExpress = require('mustache-express');
const bodyParser = require ("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:true}));
app.engine('mustache', mustacheExpress());
app.set('views', './views')
app.set('view engine', 'mustache')
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: false,
cookie:{}
}));
app.use((req, res, next) => {
if (req.originalUrl === '/') {
res.redirect("/login/");
}
next();
});
const list = [
{
username: "",
password: "",
}
];
const data = {
users:list
};
app.get('/login/', function (req, res) {
res.render("users", data);
});
app.post("/", function(req, res){
console.log(req.body);
let username = req.body.username;
let password = req.body.password;
let response = `Here are your credentials for the site: <br/>
This is your username: ${username} <br/>
This is your password: ${password} <br/>
<img src="http://media1.giphy.com/media/c54YHGDH63jJC/giphy.gif"/>`
res.send(response);
});
app.post("/", function (req, res) {
console.log(list);
list.push({username:req.body.username});
list.push({username:req.body.password});
res.redirect('/');
})
app.listen(3000, function() {
console.log('Creating login page');
})