一、安装cookie相关的模块

  • 1、npm install cookie-parser

二、在app.js文件中配置cookie相关的内容

  • 1、引入模块文件

    //引入cookie文件
    const cookieParser = require("cookie-parser");
  • 2、设置密钥

    //设置cookie,其中()里面的是密钥,随便写
    app.use(cookieParser("aaa"))

三、在路由文件中使用(注意先发送cookie在做别的)

  • 1、路由文件

    router.get("/article", (req, res) => {
        //发送cookie(名称,数据,过期时间)
        res.cookie("login",{"name":"abc"},{maxAge:1000*60*60*24});
        if (req.cookies["login"]){
            //一种新的发送数据到前端页面
            res.locals.login = req.cookies.login.name;
        }
        res.render("article.ejs");
    })
  • 2、前端模板接收发送过来的数据及前端利用脚本获取cookie

    <p><%=locals.login%></p>
    <script>
        window.onload = function () {
            //前端页面获取cookie
            console.log(document.cookie);
        }
    </script>
  • 3、可以在谷歌浏览器输入url地址旁边的一个被圈住的感叹号中查看cookie的过期时间

四、全局设置cookieviews里面所有的页面都可以获取到cookie

  • 1、在app.js中使用use标签(use不管是get还是post都可以进去),但是使用这个标签要注意一定要使用next往下执行

    app.use((req,res,next)=>{
        if (req.cookies.login){
            res.locals.login = req.cookies.login.name;
        }
        //不管怎么样都往下执行
        next();
    })
  • 2、在任何页面中都可以获取到login变量

    <p><%=locals.login%></p>

五、关于清除cookie的方法

  • 1、使用ajax请求清除cookie

    router.post("/clearcookie",(req,res)=>{
        //清除cookie,写上cookie名字
        res.clearCookie("login");
        res.json({
            code:1,
            info:"清除成功"
        })
    })
  • 2、前端ajax请求

    $("#btn").on("click",function () {
        $.ajax({
            type:"post",
            url:"/clearcookie",
            success:function (data) {
                console.log(data);
            }
        })
    })

六、安装session模块

  • 1、npm install cookie-parser --save

七、在主文件app.js中配置session相关信息

  • 1、引入刚刚安装的session

    //引入session模块
    const session = require("express-session");
  • 2、给session设置密钥

    //给session设置密钥
    app.use(session({secret:"bbb"}));

八、在路由文件中使用session

  • 1、设置session,设置后可以在任何的视图路由中使用到session

    router.post("/clearcookie",(req,res)=>{
        //设置session,由于session是存在服务器端的,所以不是用res返回给前端页面
        req.session.sessionName = "abcef";
    })
  • 2、获取session

    router.get("/", (req, res) => {
        console.log("获取到的session:"+req.session.sessionName);
        //获取session
        res.locals.name = req.session.sessionName;
        res.render("03_index.ejs");
    });
  • 3、由于session存放在服务器端,所以当浏览器关闭后就会自动清除的,不需要手动清除