node.js学习----11Express中Session的基本使用

Session介绍:
Session是另一种记录客户状态的机制,不同的是Cookie 保存在客户端浏览器中,而session 保存在服务器上。(Session在服务器上是以文件的形式保存的,并且关闭浏览器后,会马上销毁,需要重新设置)

Session工作流程:
当浏览器访问服务器并发送第一次请求时,服务器端会创建一个session 对象,生成一个类似于key,value 的键值对,然后将key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带key(cookie),找到对应的session(value)。客户的信息都保存在session 中
如图:
在这里插入图片描述

安装使用:
查看安装使用:
https://www.npmjs.com/package/express-session

具体使用:
1.安装 express-session

cnpm install express-session --save

2.引入

var session = require(“express-session”);

3.设置官方文档提供的中间件

app.use(session({
secret: ‘keyboard cat’,
resave: false,
saveUninitialized: true
}))

4.使用

设置值
req.session.username = “张三”;

获取值
req.session.username

销毁
req.session.destroy(function(err) {
})

具体例子:
项目结构:
在这里插入图片描述

zhh4.js 中代码:

/*
 * 1.安装  express-session

 cnpm install express-session  --save
 *
 *
 * 2.引入

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

 3.设置官方文档提供的中间件

 app.use(session({
 secret: 'keyboard cat',
 resave: false,
 saveUninitialized: true
 }))


 4.使用

 设置值
 req.session.username = "张三";

 获取值 req.session.username

 * */

var express = require("express");
var app = express();

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

//配置中间件
//app.use(session({
//    secret: 'keyboard cat',
//    resave: false,
//    saveUninitialized: true
//    //cookie: { secure: true }   /*secure https这样的情况才可以访问cookie*/
//}))


//配置中间件
app.use(session({
    // 可以随便写。 一个 String 类型的字符串,作为服务器端生成 session 的签名
    secret: 'this is string key',
    /*保存在本地cookie的一个名字 默认connect.sid  可以不设置*/
    name:'session_id',
    /*强制保存 session 即使它并没有变化,。默认为 true。建议设置成 false。*/
    resave: false,
    //强制将未初始化的 session 存储。  默认值是true  建议设置成true
    saveUninitialized: true,
    cookie: {
        /*过期时间*/
        //设置过期时间比如是30分钟,只要游览页面,30分钟没有操作的话在过期
        maxAge:5000
        /*secure https这样的情况才可以访问cookie*/
        //secure: true
    },
    //在每次请求时强行设置 cookie,这将重置 cookie 过期时间(默认:false)
    rolling:true
}))

/**
 * 获取 sesssion
 * sesssion 只要浏览器关闭,就会被销毁
 *
 */
app.get("/",function(req,res){
    //获取sesssion
    if(req.session.userinfo){  /*获取*/
        res.send(req.session.userinfo+'back');
    }else{
        res.send('未登录');
    }
});


/**
 * 保存 sesssion
 */
app.get("/login",function(req,res){
    //设置session
    req.session.userinfo="zhaihaohao";
    res.send('登录成功');
});



app.listen(3000);

启动:
在这里插入图片描述

访问:
保存:
在这里插入图片描述
获取:
在这里插入图片描述

ok 完了;

自我感受:
Session 虽然要保存在服务器(文件),但是在实际使用的时候,还是要保存在数据库表中,才比较好用。
所以,我们可以不使用Session,直接在表中保存一个字段,使用起来才比较方便

源码下载:

https://download.csdn.net/download/zhaihaohao1/10950975

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值