zoukankan      html  css  js  c++  java
  • node.js中express使用cookie-parser 和 cookie-session处理会话

    cookie-parser 中间件用来解析客户端传过来的cookie,cookie-session 中间件用来建立基于cookie的会话session。

    一、安装 cookie-parser 和 cookie-session

    npm install cookie-parser
    npm install cookie-session
    

      

    二、使用 cookie-parser 解析

    const express = require('express');
    const cookieParser = require('cookie-parser');
    
    let app = express();
    app.listen(8888);
    
    //使用解析cookie中间件
    //cookieParser()参数一,用来设置签名密钥,可以是一个数组,设置多个。
    app.use(cookieParser());
    
    app.get('/', function (req, res) {
        //获取cookie信息
        console.log('Cookies: ', req.cookies);
    
        //设置cookie
        //参数一表示,cookie名称
        //参数二表示,cookie的值
        //参数三表示,cookie的配置选项
        // domain 域名
        // path 路径
        // expires 过期时间
        // maxAge 有效时间(以毫秒为单位)
        // httpOnly 只能由web服务器访问
        // secure 是否与https一起使用
        // signed 是否签名
        res.cookie('test', 'test', {path: '/', expires: new Date(Date.now() + 3600 * 1000)});
    
        res.cookie('name', 'xiaoxu', {maxAge: 3600 * 1000});
    
        res.end();
    });
    

    为了防止cookie信息被篡改,我们可以设置签名。

    const express = require('express');
    const cookieParser = require('cookie-parser');
    
    let app = express();
    app.listen(8888);
    
    //使用解析cookie中间件
    //cookieParser()参数一,用来设置签名密钥,可以是一个数组,设置多个。
    app.use(cookieParser('fermtp34n537m3o450'));
    
    app.get('/', function (req, res) {
        //获取cookie信息
        console.log('cookies: ', req.cookies);
    
        //设置使用签名
        res.cookie('test', 'test', {signed: true});
    
        //使用签名的cookie通过下面方式获取
        console.log('signedCookies: ', req.signedCookies);
    
        res.end();
    });
    

      

    二、使用 cookie-session 处理会话

    注意cookie-session中间件是基于cookie的,会把会话信息存储在cookie里。

    const express = require('express');
    const cookieSession = require('cookie-session');
    
    let app = express();
    app.listen(8888);
    
    app.use(cookieSession({
        //会话在cookie中的名称
        name: 'session',
        //用于签名的密钥
        keys: ['j239r5ndgffte'],
        //cookie过期时间,单位毫秒
        maxAge: 3600 * 1000
    }));
    
    app.get('/', function (req, res) {
        //获取会话数据
        console.log(req.session);
    
        //设置会话数据
        req.session.name = 'xiaoxu';
        req.session.age = 24;
        req.session.sex = '男';
    
        res.end();
    });
    

      

  • 相关阅读:
    删除链表的倒数第N个节点
    SVN快速入门(TSVN)
    C# HttpWebRequest提交数据方式浅析
    简单的3个SQL视图搞定所有SqlServer数据库字典
    简单统计SQLSERVER用户数据表大小(包括记录总数和空间占用情况)
    详细讲解Android对自己的应用代码进行混淆加密防止反编译
    PHP之网络编程
    PHP之ThinkPHP模板标签操作
    PHP之ThinkPHP数据操作CURD
    关于数组的取极值和排序
  • 原文地址:https://www.cnblogs.com/jkko123/p/10293576.html
Copyright © 2011-2022 走看看