关于session

1.session是什么?

session 指的是会话,但是后端人员常说的session,全程叫:服务器session会话存储

2.特点

(1)存在于服务端
(2)存储的是浏览器和服务器之间沟通产生的一些信息

3.存储

默认session的存储在服务器的内存中,每当一个新的客户端发来请求,服务器都会新开辟初一块空间,供session使用。

4.工作流程

-- 第一次浏览器请求服务器的时候,服务器会开辟初一块内存空间,供session会话使用。
-- 返回响应的时候,会自动返回一个cookie,(有时候,会返回多个,为了安全)cookie里包含着,上一步会话存储“容器”的编号(id)
-- 以后请求的时候,回自动携带这个cookie,给服务器
-- 服务器从该cookie中拿到对应的session的id,去服务器中匹配
-- 服务器会根据匹配信息,决定下一步的业务逻辑。

5.备注

1. 一般来说。cookie一定会配合session使用
2. 服务端一般会做session的持久化,防止由于服务器重启,造成的session丢失。

6.举个🌰:

在server.js中
6.1.引入express-session模块 (用于在exporess 中操作session)
 let session = require(‘express-session’)
6.2.引入connect-mongo 模块,用于session持久化
let mongoStore = require(‘connect-mongo’)(session)
6.3.配置全局对象:
app.use(session({
		name:'userid', //设置cookie的name,默认值是:connect.sid
	    secret:'daiwang', //参与🔐加密的字符串(又称签名)
	  	saveUninitialized:false, //是否在储存内容之前创建会话
	 	resave:true, //是否在每次请求时,强制重新保存session,即使	他们没有变化
		store:new MongoStore({
	   	url:'mongodb://localhost:27017/cookies_container',
	   	touchAfter:1800 ,//修改频率 (例:在24小时之内只更新一次)
		  }),
	  	cookie:{
	 	   httpOnly:true,//开启后前端无法通过JS操作cookie
	 	   maxAge:1000 * 30 ,//设置cookie的过期时间
 	 },
}))
6.4.给session值:(在业务路由)
request.session._id = findResult._id 
6.5.取session值:(在UIrouter)
const {_id} = request.session

补充内容:

给密码加密:

1.sha1版:
(1)安装
yarn add sha1
(2)引入
let sha1 = require('sha1')
(3)使用
注册时往数据库创建数据:password:sha1(password)
登录时: 			password:sha1(password)
2.md5版
(1)安装
yarn add md5
(2)引入
let md5 = require('md5')
(3)使用
注册时往数据库创建数据:password:md5(password)
登录时: 			password:md5(password)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值