session一些基本的东西

session

session是什么

session是因为cookie的弊端(存放在客户端,容易被客户修改伪造,数据量大也有纯传输问题) 才被做出来的,用session存储在服务器中,这让他的安全性也相对高一点

session是一次浏览器和服务器的交互的会话,session也是一种存储方案

服务器建立一个session,会在客户端建立一个唯一的识别(目的是为了只有这个客户端才能获得这个session

session的标识也会根据浏览器有关系 不同的浏览器的同一用户是不同的标识

session 的运作通过一个 session_id 来进行。session_id 通常是存放在客户端的 cookie 中。客户端通过 session_id 就能跟服务器上的session数据联系起来进行数据的保存和修改。

session 可以存放在

内存 cookie本身 redis 或 memcached 等缓存中 数据库中

存在缓存的方案比较常见,因为存数据库中要经过磁盘读取查询的效率远低于缓存中

node.js中的session

需要安装express-session的包对应的路径下命令行引入

npm install express-session

引入包

session = require("express-session");
express = require("express");
app = express();

session的属性:

name:设置在cookie中,session的字段名称 ,默认为 connect.sid

secret:用来计算hash(哈希值)并且放在客户端中的cookie中

cookie:设置存放 session id 的 cookie 的相关选项

store: session 的存储方式,默认存放在内存中,也可以使用 redis,mongodb 等。express 生态中都有相应模块的支持。

genid: 产生一个新的 session_id 时, 默认使用 uid2 这个 npm 包来生产。

rolling:每个请求都重新设置一个 cookie,默认为 false。

resave:如果为true即使 session 没有被修改,也保存 session 值,默认为 true。

默认的内容

cookie: {
	path: '/', 
	httpOnly: true, 
	secure: false, 
	maxAge: null 
}

配置session

app.use(
  session({
    
    //服务器中保存的唯一用户的信息
    secret: "zfpx",//设置签名秘钥 内容可以任意填写
    saveUninitialized: false,//如果原先没有session那么就设置,否则不设置
    resave: false,//不强制保存,如果session没有被修改不重新保存  如果为true就是相反的
    cookie: {
    
     maxAge: 1000 * 60 * 60 * 24 * 30 },//cookie的有效时间  时间过了session和相应的cookie都失效
  })
);

猜你喜欢

转载自blog.csdn.net/weixin_44492275/article/details/108580395