美文网首页
Express系列(六)

Express系列(六)

作者: 笑红尘123 | 来源:发表于2019-12-07 20:43 被阅读0次

session

一、什么是session?

session是另一种记录客户状态的机制,与cookie保存在客户端浏览器不同,session保存在服务器当中;当客户端访问服务器时,服务器会生成一个session对象,对象中保存的是key:value值,同时服务器会将key传回给客户端的cookie当中;当用户第二次访问服务器时,就会把cookie当中的key传回到服务器中,最后服务器会吧value值返回给客户端。因此上面的key则是全局唯一的标识,客户端和服务端依靠这个全局唯一的标识来访问会话信息数据。

二、设置session

安装:

npm install express-session --save

引入:

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

设置

session(options);

demo:

const express=require("express");
const session=require("express-session");
 
var app=express();
 
//配置中间件
app.use(session({
    secret: "keyboard cat",
     resave: false,
     saveUninitialized: true,
     cookie: ('name', 'value',{maxAge:  90000,secure: false})
}));
 
app.use('/login',function(req,res){
    //设置session
    req.session.userinfo='tom';
    res.send("登陆成功!");
});
 
app.use('/',function(req,res){
    //获取session
    if(req.session.userinfo){
        res.send("hello "+req.session.userinfo+",welcome");
    }else{
        res.send("未登陆");
    }
});
 
app.listen(3000);

session(option)中对session进行设置,它的主要参数是:

1. name - cookie的名字(原属性名为 key)。(默认:’connect.sid’)
2. store - session存储实例
3. secret - 用它来对session cookie签名,防止篡改
4. cookie - session cookie设置 (默认:{ path: ‘/‘, httpOnly: true,secure: false, maxAge: null })
5. genid - 生成新session ID的函数 (默认使用uid2库)
6. rolling - 在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false)
7. resave - 强制保存session即使它并没有变化 (默认: true, 建议设为:false)
8. proxy - 当设置了secure cookies(通过”x-forwarded-proto” header )时信任反向代理。当设定为true时,
”x-forwarded-proto” header 将被使用。当设定为false时,所有headers将被忽略。当该属性没有被设定时,将使用Express的trust proxy。
9. saveUninitialized - 强制将未初始化的session存储。当新建了一个session且未设定属性或值时,它就处于未初始化状态。在设定一个cookie前,这对于登陆验证,减轻服务端存储压力,权限控制是有帮助的。(默认:true)
10. unset - 控制req.session是否取消(例如通过 delete,或者将它的值设置为null)。这可以使session保持存储状态但忽略修改或删除的请求(默认:keep)

三、session的常用方法

req.session.username="tom"
//获取session
req.session.username
 
//重新设置cookie的过期时间
req.session.cookie.maxAge=9000000;
//销毁session
req.session.destroy(function(err){
     
})

demo:退出登陆

const express=require("express");
const session=require("express-session");
 
var app=express();
 
//配置中间件
app.use(session({
    secret: "keyboard cat",
     resave: false,
     saveUninitialized: true,
     cookie: ('name', 'value',{ maxAge:  900000,
                                secure: false,
                                name: "seName",
                                resave: false})
}));
 
app.use('/login',function(req,res){
    //设置session
    req.session.userinfo='tom';
    res.send("登陆成功!");
});
 
app.use('/loginOut',function(req,res){
    //注销session
    req.session.destroy(function(err){
        res.send("退出登录!"+err);
    });
});
 
app.use('/',function(req,res){
    //获取session
    if(req.session.userinfo){
        res.send("hello "+req.session.userinfo+",welcome to index");
    }else{
        res.send("未登陆");
    }
});
 
app.listen(3000);

如果感觉有帮助留下一个宝贵的赞或者给小编一个赞赏!!!

相关文章

  • Express系列(六)

    session 一、什么是session? session是另一种记录客户状态的机制,与cookie保存在客户端浏...

  • MEAN 笔记

    Express Express Basic 通常在express或者是MEAN的入口js文件中使用到一系列的设置,...

  • Express 框架

    Express 简介 Express是基于Node.js平台的快速、开放、极简的web应用开发框架。 提供了一系列...

  • Node.js+Express+MongoDB 建站实例

    本项目为系列博客,目前有以下系列 [ Node.js+Express+MongoDB 建站实例(1)-- 网站初始...

  • Express系列(三)

    Express之get和post请求 一、get请求 网站开发中,get都用作数据获取和查询,类似于数据库中的查询...

  • Express系列(七)

    express模版引擎之ejs 随着前端业务的不断发展,页面交互逻辑的不断提高,让数据和界面实现分离渐渐被提了出来...

  • Express系列(八)

    express之模版引擎jade 一、什么是jade? jade模板引擎相较于原来的html会显得更加简洁,它将标...

  • Express系列(五)

    Cookie 当关闭一个登录过的网址并重新打开它后,我们的登录信息依然没有丢失;当我们浏览了商品后历史记录里出现了...

  • Express系列(四)

    中间件 中间件的作用主要是做中间代理操作,中间件就是在做接收到请求和发送响应中间的一系列操作。express是一个...

  • Express系列(一)

    一、什么是 Express?Express是最流行的 Node 框架,是许多其它流行 Node 框架的底层库。它提...

网友评论

      本文标题:Express系列(六)

      本文链接:https://www.haomeiwen.com/subject/npzugctx.html