NodeJs:使用connect构建简单的用户登录

根目录文件:app.js(程序文件)、users.json(储存用户信息)、package.json(项目描述)

package.json

{
    "name":"user login sys",
    "description":"Our first user login system",
    "version":"0.0.1",
    "dependencies":{
        "connect":"*"
    }
}

users.json

{
    "admin":{
        "password":"admin",
        "name":"admin test"

    }
}

app.js

/**
 * Created by ty4z2008 on 14-2-12.
 */
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 login</legend>' +
                '<p>user:<input type="text" name="user"></p>' +
                '<p>Password:<input type="password" name="password"></p>' +
                '<button>Submit</button>' +
                '</fieldset>' +
                '</form>'].join(''));
        }else{
            next();
        }
    }
    ,function(req,res,next){
        if('/login'==req.url&&'post'==req.method.toLowerCase()){
            res.writeHead(200);
            if(!users[req.body.user]||req.body.password!=users[req.body.user].password){
                res,end('username/pwd error');
            }else{
                req.session.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){
            req.session.logged_in=false;
            res.writeHead(200);
            res.end("logout");
        }else{
            res.writeHead(302,{
                'location':'/'
            })
            res.end()
        }
    }
);
server.listen(3000)




转载于:https://my.oschina.net/websec/blog/199157

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值