cookie、session实现登录,及特点 (二)

cookie的问题解决方案就是session

cookie存userId,在服务端对应username ,即session

session:即server端存储用户信息。存储会话信息的统称。

总不能存到数据库,频繁访问每一个交易都会带cookie查询用户信息。数据库:速度慢,需要修改信息才需要用。

每一个交易都会带userId,每一个userId都有session对应信息。session是放在最顶层入口app.js

 

如何实现session:

步骤一:

// 解析session。SESSION_DATA为全局
    // userid啥时候赋值的?
    let needSetCookie = false
    let userId = req.cookie.userid;
    if(userId) {
        if(SESSION_DATA[userId]) {
            // 有的话,
        } else {
            SESSION_DATA[userId] = {}
        }
    } else {
        needSetCookie = true
        userId = `${Date.now()}_${Math.random()}`
        SESSION_DATA[userId] = {}
    }
    // 从SESSION_DATA中获取 session
    req.session = SESSION_DATA[userId]

步骤二:设置cookie

if(needSetCookie) {
                        res.setHeader('Set-Cookie',`userid=${userId}; path=/;httpOnly`)
                    }

步骤三:设置session

req.session.username = data.username
req.session.realname = data.realname

 

当前设置session产生的问题:

1,目前session是js变量,放在nodejs进程 内存中。进程内存有限,访问量过大,消耗内存。

2,正式上线后运行是多进程。进程之间内存不能共享。

 

posted @ 2020-08-07 15:21  毛栗的demo  阅读(143)  评论(0)    收藏  举报