nodejs开发中关于cookie及session的设置

来源:互联网 发布:图片浏览软件下载 编辑:程序博客网 时间:2024/06/05 04:23

一、安装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存放在服务器端,所以当浏览器关闭后就会自动清除的,不需要手动清除