NodeJs session中间件 及应用(简单的登录与登出)

来源:互联网 发布:ospf链路状态数据库 编辑:程序博客网 时间:2024/06/10 17:31

session中间件用于为了保存用户数据提供一个session管理器。虽然session中的数据与cookie分开保存,但是session中的数据经过加密处理后默认保存在一个cookie中。因此,在使用session中间件之前必须使用cokieParser中间件

在使用了session中间件之后,代表客户端请求的http.IncomingMessage对象就具有了一个session属性,属性值为一个对象,该对象保存了所有session数据。

var connect = require('connect'),    users = require('./users');//注意这里直接require了json文件  当你只是对外暴露数据的时候 就不需要加上module.exports 直接把数据文件以JSON的形式暴露出来就好var server = connect(    connect.logger('dev'),    connect.bodyParser(),    connect.cookieParser(),    connect.session({secret:'my app secret'}),//这句不能少 否则  会报错找不到    req.session.logged_in    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>',                '<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){            res.writeHead(200);            if(!users[req.body.user]||req.body.password!=users[req.body.user].password){                res.end('Bad username/password');            }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=false;            res.writeHead(200);            res.end('Logged out!');        }else{            next();        }    });server.listen(3000);
1 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 密袋鼠咬了人怎么办 lv皮带如果长了怎么办 天赐农场公众号进不去了怎么办 苹果删了订阅号怎么办 蚂蚁借呗没有自动扣款怎么办 有对方qq号名字怎么办 腾讯模拟器刺激现场注册上限怎么办 丹阳智慧人社登入密码忘了怎么办? ipad系统被锁了怎么办 电脑管理员账号删了怎么办 自己电脑删文件需要管理员怎么办 苹果电脑管理员密码忘记了怎么办 电脑提示安全设置不允许下载怎么办 微信和ipad同步怎么办 苹果6空间已满怎么办 苹果6内存虚满怎么办 监控主机密码忘了怎么办 加购物车不下单怎么办 绑定qq账号消息不见了怎么办 现在的注册微信怎么办 爱奇艺手机号码被别人绑定了怎么办 手机号码换了支付宝账号怎么办 qq换手机号了怎么办呢 公司被注销了公众号怎么办 qq号被限制查找怎么办 qq号别人查找不到怎么办 qq邮箱已被注册怎么办 微信付款没网络怎么办 天猫买的假货店铺关门了怎么办 鞋小了半码怎么办 迅雷会员种子不能加速怎么办 迅雷会员为什么不能加速怎么办 持有st创智股票怎么办 租的房子床坏了怎么办 宜家定时器不响怎么办 新插座插不进去怎么办 本溪人社app打不开怎么办 南宁电车超过上牌时间怎么办 苹果6s降频怎么办 0首付手机还不起怎么办 乐才app登录不上怎么办