[英]How to use User Authentication with node.js
我嘗試練習使用用戶身份驗證。
但是它不能按我預期的那樣工作。
我希望它可以向我顯示登錄界面。
腳步:
1.使用localhost:12345 / login_page連接服務器
2.然后向我顯示登錄界面
3.輸入用戶名和密碼
var express = require('express');
var cookieSession = require('cookie-session');
var app = express();
app.use(cookieSession({
secret: 'session',
keys: 'node'
}));
app.get('/login_page', function(req, res){
if(!req.session.logined){
res.send('<a href="http://127.0.0.1:12345/logout">Logout Now</a>');
res.end();
return;
}
res.send('<form action="http://localhost:12345/login" method="POST">');
res.send('<input type="text" name="username">');
res.send('<br/>');
res.send('<input type="password" name="password">');
res.send('<br/>');
res.send('<input type="submit" value="login">');
res.send('</form>');
res.end();
});
app.post('/login', function(req, res){
if(res.body.username != 'user' ||
req.body.password != '12345678'){
res.send('Account or password error, please login again');
res.end();
return;
}
res.session.logined = true;
res.redirect('/login_page');
res.end();
});
app.post('/logout', function(req, res){
req.session.logined = false;
res.redirect('/login');
res.end();
});
app.listen(12345);
您在這里有幾個錯誤。 首先,每個請求不能多次使用res.send()
函數,並且最終不必使用res.end
。
因此,您的代碼應類似於以下內容:
var express = require('express');
var cookieSession = require('cookie-session');
var app = express();
app.use(cookieSession({
secret: 'session',
keys: 'node'
}));
app.get('/login_page', function(req, res){
if(!req.session.logined){
res.send('<a href="/logout">Logout Now</a>');
}
res.send('<form action="/login" method="POST"> <input type="text" name="username"><br/><input type="password" name="password"><br/><input type="submit" value="login"></form>');
});
app.post('/login', function(req, res){
if(res.body.username != 'user' ||
req.body.password != '12345678'){
res.send('Account or password error, please login again');
}
req.session.logined = true;
res.redirect('/login_page');
});
app.post('/logout', function(req, res){
req.session.logined = false;
res.redirect('/login');
});
app.listen(12345);
顯然,為了更好的實踐,您應該使用'res.render or 'res.sendFile
將響應與html
文件一起發送。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.