Session和Cookie的概念及在Express框架中的使用

1.Session和cookie概念

Session

session是将用户名,密码,存储在服务器中的以session-id为名的文件中。将session-id文件名返回给客户端,客户端将session-id存储在cookie;再次访问的时候,携带session-id进行访问,session-id=令牌;

cookie

cookie是存储在本地,请求成功之后,服务器会返回一个令牌,令牌就被存储到cookie中,如果浏览器的cookie功能被禁止掉,整个cookie就不能使用了,也就是说就不可以保存账号和密码了。

session和cookie区别?

cookie是把数据存储在客户端的;
session是把数据存储在服务器的,使用session更加安全

2.Session和cookie在Express中的使用

在express这个框架中,默认不支持Session和Cookie,但是我们可以使用第三方中间件:express-sessioncookie-parser来解决。

配置使用express-session插件

npm install express-session

配置:

//首先引入session中间件
var session = require('express-session')
//配置
app.use(session({
  secret: 'keyboard cat',//配置加密字符串,“keyboard cat”可以改成你想改的字符串
  resave: false,
  saveUninitialized: true,//默认为true表示无论是否使用session,我都默认为你分配一把钥匙
}))
//使用:
//在路由里面添加session数据
app.get('/',(req,res)=>{
//一般把用户信息都可以存到session里面,user是包含用户名密码等的对象
	req.session.user=user 
})
//在另一个路由里面获取session数据
app.get('/index',(req,res)=>{
	req.session.user
})
小提示:默认session数据是内存存储的,服务器一旦重启就会丢失,
真正的生产环境会把session进行持久化存储

用处:比如做后台管理系统的时候,界面用户未登录前显示状态未登录,登录过后跳转到页面的时候显示已登录:xxx 可以这样实现

当前登录用户:{{ user.nickname }}

实现页面登陆前只显示登录、注册,登陆后只显示个人主页,设置,退出

{{if user}}
	当前登录用户:{{ user.nickname }}
	<a href='##'>个人主页</a>
	<a href='##'>设置</a>
	<a href='##'>退出</a>
{{else}}
	<a href='##'>登录</a>
	<a href='##'>注册</a>
{{/if}}

配置使用cookie-parser插件

npm install cookie-parser

配置和使用:

//配置:
var express = require('express')
var cookieParser = require('cookie-parser')
 
var app = express()
//调用cookie-parser
app.use(cookieParser())
//使用:
//设置cookie
app.get('/', function (req, res) {
	res.cookie('id',result[0].id,{maxAge:604800000})
	res.cookie('admin',result[0].admin,{maxAge:604800000})
	res.cookie('password',result[0].password,{maxAge:604800000}

})
//获取cookie
app.get('/', function (req, res) {
	res.cookies
})

设置cookie时的参数

 res.cookie('key','value',option)
		option是对象,里面可以写这些参数:{
		        domain: 域名 【不用设置】
		        expires: 指定时间cookie失效 【不用设置】
		        maxAge: 多长时间之后失效(毫秒)
		        secure: 是否在https和http中生效 【不用设置】
		        path: 在哪个路径可以使用cookie 【不用设置】
		        httpOnly:可防止 XSS 攻击产生 
		        signed: 对cookie加密
		        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sea9528

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值