美文网首页
cookie session

cookie session

作者: 0说 | 来源:发表于2019-01-14 22:30 被阅读0次

express:
1.数据
2.中间件


http-无状态的

cookie、session

cookie:在浏览器保存一些数据,每次请求都会带过来
*不安全、有限(4K)

session:保存数据,保存在服务端
*安全、无限


session:基于cookie实现的
*cookie中会有一个session的ID,服务器利用sessionid找到session文件、读取、写入

隐患:session劫持


cookie
1.读取——cookie-parser
2.发送——

session
cookie-session


cookie:
1.cookie空间非常小——省着用
2.安全性非常差

1.精打细算
2.校验cookie是否被篡改过

a.发送cookie
res.secret='字符串';
res.cookie(名字, 值, {path: '/', maxAge: 毫秒, signed: true});

b.读取cookie
cookie-parser

server.use(cookieParser('秘钥'));

server.use(function (){
req.cookies 未签名版
req.signedCookies 签名版
});

c.删除cookie
res.clearCookie(名字);


cookie-parser
cookie-encrypter


session:
cookie-session

1.写入
2.读取

session劫持


cookie-session

server.use(cookieParser());
server.use(cookieSession({
keys: [.., .., .., ..]
}));

server.use('/', function (){
req.session
});

delete req.session


1.cookie-存在浏览器,4K,不安全
签名、加密

2.session-存在服务器
不能独立存在,基于cookie


server.use(cookieParser('签名字符串'));
server.use(cookieSession({

}));

server.use(function (req, res){
res.cookie(名字, 值, {signed: true});

res.cookies['user']
res.clearCookie('名字');

res.session['xxx']
delete res.session['xxx'];

});


cookie实例

const express = require('express');
const server = express();
// 读取cookie 中间键
const cookieParser = require('cookie-parser');
//                    解析签名的密钥
server.use(cookieParser('wwreke'))
server.use('/aaa',(req, res, next)=>{
    // 签名密钥
    req.secret='wwreke'
    // 设置cookie             是否启用签名    
    // 签名的好处 禁止人为修改  
    res.cookie('user','blue',{signed:true,path:'/aaa',maxAge: 24*24*3600*1000})
    
    // 有签过名的
    console.log(req.signedCookies)
    // 这个是没有签过名的
    console.log(req.cookies)
    res.send('6666')

    next()
})

// 删除cookie
server.use('/aaa', (req, res)=>{
    res.clearCookie('user')
    res.send('66666')
})
server.listen(8083)

cookie-session

const express = require('express');
const cookieSession = require('cookie-session');
const cookieParser = require('cookie-parser')
const server = express();

// 先解析cookie
server.use(cookieParser())

// 才能用session   session 是依赖于cookie存在的
server.use(cookieSession({
    name: 'sess', // session的名字
    // 设置session 的key 
    // 是个数组 每一次请求会循环去一个数值进行加密
    keys: ['aaaa', 'cccc', 'ddddd'],
    maxAge: 2*3600*1000 // 有效时间
}))
server.use('/', (req, res)=> {
    if(req.session['count'] == null){
        req.session['count'] = 1
    } else {
        req.session['count']++
    }
    console.log(req.session['count'])
    res.send('66666666')
})

server.listen(8081)

相关文章

网友评论

      本文标题:cookie session

      本文链接:https://www.haomeiwen.com/subject/psysdqtx.html