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加密
		        }

猜你喜欢

转载自blog.csdn.net/sea9528/article/details/105443581
今日推荐