connect.md

connect 中间件 实现一个登录网站


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var connect = require('connect')
, users = require('./users')


var server = connect(
connect.logger('dev'),
connect.bodyParser(),
connect.cookieParser(),
connect.session({secret: 'my app secret'}),
function(req, res, next){
if('/' == req.url && req.session.logged_in){
res.writeHead(200, {'Content-Type': 'text/html'});
res.end(
'welcome back, <b>' + req.session.name + '</b>'
+ '<a href="/logout">LogOUT</a>');
}else{
next();
}
},
function(req, res, next){
if('/' == req.url && 'GET' == req.method){
res.writeHead(200, {'Content-Type': 'text/html'});
res.end([
'<form action="/login" method="POST">',
'<fieldset>',
'<legend>Please log in</legend>
',
'<p>User: <input type="text" name = "user"></p>
',
'<button>submit</button>

',
'</fieldset>','</form>'
].join(''));
}else{
next();
}
},
function(req, res, next){
if('/login' == req.url && 'POST' == req.method){
res.writeHead(200);
if(!users[req.body.user] || req.body.password != users[req.body.user].password){
res.end('bad user name/password!');
}else{
req.sessoin.logged_in = true;
req.session.name = users[req.body.user].name;
res.end('Authenticated!')

}else{
next();
}
}
},
function(req, res, next){
if('/logout' == req.url){
req.session.logged_in = false;
req.writeHead(200);
res.end('logged out');

}else{
next();
}
}
)