一,cookie和session
1,cookie是保存在客户端,每次请求都会传给服务器,传送用户的登录、检验等信息,即cookie记录用户在客户端的信息
2,session保存在服务器,一般放在内存,也有放在数据库中,保存用户的登录、检验等信息,所以session是在服务器端记录用户信息,包括记录cookie值
详细介绍:http://blog.csdn.net/fangaoxin/article/details/6952954
二,express框架下,在服务端用mongod保存session,session的ID会通过cookie传送给客户端保存着,客户端每次请求时都会把cookie(包含了session的ID)回传给服务端,服务端根据session的ID,在mongod查找对应的session,进行用户登录信息校验,下面具体代码
在app.js 初始化express-session,用于操作session;初始化connect-mongo,用于保存session到mongod
const session = require('express-session'); const MongoStore = require('connect-mongo')(session); app.use(session({ secret: "123456", name: "sessionName", // 传送到客户端浏览器时对应的cookie的name cookie: { maxAge:1000 * 60 * 60 * 24 * 30 // cookie有效期,如果session有限期默认读取这个 }, resave: false, saveUninitialized: true, store: new MongoStore({ url:"mongodb://localhost/myExpressAppSession" // 保存session的mongod数据库 }) }));
使用session
function saveUserSession(req,user){ var session = req.session; // 获取session session.user = user; // 在session中保存用户信息 } function removeUserSession(req,callback){ req.session.destroy(callback); // 删除session中保存的用户信息 }
github介绍:
https://github.com/expressjs/session?_ga=1.74482769.258355933.1450262776
Leave a Reply