node会话管理——cookie-parser

cookie是由服务器发送给客户端(浏览器)的小量信息。数据库

咱们知道,平时上网时都是使用无状态的HTTP协议传输出数据,这意味着客户端与服务端在数据传送完成后就会中断链接。这时咱们就须要一个一直保持会话链接的机制。在session出现前,cookie就彻底充当了这种角色。也就是,cookie的小量信息能帮助咱们跟踪会话。通常该信息记录用户身份。express

固然cookie也常记录跟踪购物车的商品信息(如数量)、记录用户访问次数等。json

cookie-parser 的做用就是设置,获取和删除 cookie。浏览器

var express = require('express');

//引入cookie-parser模块
var cookieParser = require("cookie-parser");

//建立express实例
var app = express();

 // 设定监听端口
app.set('port', process.env.PORT || 3000);

//建立cookie实例
app.use(cookieParser());

app.use("/login", function(req,res){
    //获取cookie
    console.log(req.cookies);
    
    //设置cookie,关闭签名
    res.cookie("user", {username: req.body.username}, {maxAge: 600000 , httpOnly: true, 'signed': false});
});

//监听3000端口
var server = app.listen(app.get('port'),function(){
    console.log("建立成功!")
});   

引入

var cookieParser = require('cookie-parser'); #引入模块 app.use(cookieParser()); #挂载中间件,能够理解为实例化

这两行代码默认在app.js中写好了,表示如今能够直接使用 cookie 了。安全

建立cookie

res.cookie(name, value [, options]);

name 是 cookie 名,value 是 cookie 值,能够是 json 对象或字符串。options 是选项,经常使用选项有:服务器

{ 'maxAge': 90000, # 有效时长,即90000毫秒后过时,String 'signed': false # 默认为false,表示是否签名,Boolean }

建立 cookie 会在 http 响应头中添加Set-Cookie,从而在浏览器中设置 cookiecookie

获取cookie

var cookies = req.cookies # 获取cookie集合 var value = req.cookies.key    # 获取名称为key的cookie的值

删除cookie

res.clearCookie(name [, options])

name 是 cookie 名,options 与建立 cookie 时所传一致 session

签名

上面所写 cookie 的各类操做,都是没有通过签名的。签名能够提升安全性。下面是使用签名生成 cookie 的方法,大同小异,修改上文便可:app

修改实例配置:ui

app.use(cookieParser('ruidoc')); # 须要传一个自定义字符串做为secret

修改建立cookie配置

# 建立cookie的options中,必填 signed: true res.cookie(name, value, { 'signed': true });

修改获取cookie方式:

var cookies = req.signedCookies # 获取cookie集合 var value = req.signedCookies.key    # 获取名称为key的cookie的值

 

使用cookie记住密码

方案1: 

    直接把用户名与密码都保持到Cookie中,下次访问时检查Cookie中的用户名与密码,与数据库比较。这是一种比较危险的选择,通常不把密码等重要信息保存到Cookie中。 

方案2: 

    把密码加密后保存到Cookie中,下次访问时解密并与数据库比较。这种方案略微安全一些。若是不但愿保存密码,还能够把登陆的时间戳保存到Cookie与数据库中,到时只验证用户名与登陆时间戳就能够了。 

方案3: 

    实现方式是把帐号按照必定的规则(密钥)加密后,连同帐号一块保存到Cookie中。下次访问时只须要判断帐号的加密规则是否相同便可。 

相关文章
相关标签/搜索