Node.js 2-cookie 和 session

本文详细介绍了如何在Express.js中使用session和cookie进行用户会话管理,包括配置session中间件,设置cookie,以及处理不同类型的HTTP请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var express = require('express');
var app = express();
/* var cookieParser = require('cookie-parser'); */
var session = require('express-session');
var path = require('path')
app.use('/static', express.static(path.join(__dirname, '../Web-M-XYS')))
//即 前后端同源才能接收到cookie
app.use(session({
    secret: 'hubwiz app', //secret的值建议使用随机字符串
    cookie: {maxAge: 10 * 1000 * 30} // 过期时间(毫秒)
}));
var fs = require('fs')
fs.readFile("./src/data.json")

//  主页输出 "Hello World"
app.get('/', function (req, res) {
    console.log("主页 GET 请求");
    res.send('Hello GET');
})


//  POST 请求
app.post('/', function (req, res) {
    console.log("主页 POST 请求");
    res.send('Hello POST');
})

//  /del_user 页面响应
app.get('/del_user', function (req, res) {
    console.log("/del_user 响应 DELETE 请求");

    //res.send('删除页面');
    if (req.session.sign) {//检查用户是否已经登录
        console.log(req.session);//打印session的值
        res.send('welecome <strong>' + req.session.name + '</strong>, 欢迎你再次登录');
    } else {//否则展示index页面
        req.session.sign = true;
        req.session.name = '汇智网';
        res.end('欢迎登陆!');
    }
})

//  /list_user 页面 GET 请求
app.get('/list_user', function (req, res) {
    console.log("/list_user GET 请求");
    console.log('session id: ', req.session.id);
    res.set({'Content-Type':'application/json','Access-Control-Allow-Origin':'*'})
    res.cookie('haha', 'name1=value1&name2=value2', {
        maxAge: 20 * 1000, path: '/', httpOnly: false
    });
    res.send(data.toString());
})

/* // 对页面 abcd, abxcd, ab123cd, 等响应 GET 请求
app.get('/ab*cd', function (req, res) {
    console.log("/ab*cd GET 请求");
    res.send('正则匹配');
}) */


var server = app.listen(8081, function () {

    var host = server.address().address
    var port = server.address().port

    console.log("应用实例,访问地址为 http://%s:%s", host, port)

})


cookie & session

在这里插入图片描述

var express = require('express');
var app = express();
/* var cookieParser = require('cookie-parser'); */
var session = require('express-session');
var path = require('path')
app.use('/static', express.static(path.join(__dirname, '../Web-M-XYS')))
//即 前后端同源才能接收到cookie
app.use(session({
    secret: 'hubwiz app', //secret的值建议使用随机字符串
    cookie: {maxAge: 10 * 1000 * 30} // 过期时间(毫秒)
}));

导入session
var session = require(‘express-session’);
相当于我用这个加密,如果别人获得这个密码,就能对session加密解密
secret: ‘hubwiz app’, //secret的值建议使用随机字符串

创建了session,就会给客户端自动分配给sessionId,(一般session里面包括时间戳和sessionId,并且会根据secret自动加密)服务端可以通过
console.log('session id: ', req.session.id);
拿到sessionId的值。

例如:
在这里插入图片描述

cookie 一般是服务端自己进行加密
设置cookie:

    res.set({'Content-Type':'application/json','Access-Control-Allow-Origin':'*'})
    res.cookie('haha', 'name1=value1&name2=value2', {
        maxAge: 20 * 1000, path: '/', httpOnly: false
    });

注意 (前端ajax收不到session问题)

方法1.前后台同源

var path = require('path')
app.use('/static', express.static(path.join(__dirname, '../Web-M-XYS')))
//即 前后端同源才能接收到cookie

这里的index.js是Node文件下的index.js 是node.js的入口文件
在这里插入图片描述
可参考:https://www.cnblogs.com/slovey/p/9213631.html

方法2.

参考:https://blog.youkuaiyun.com/fortunegrant/article/details/79534831
xhrFields 大概的意思是,默认情况下,标准的跨域请求是不会发送cookie等用户认证凭据的。所以,当你再次访问远程api的时候,cookie是不会被带上的,于是乎,服务器理所当然地认为你还没有登录。MDN上的简单介绍 credentials 。用XMLHttpRequest请求的时候,我们需要设置属性 withCredentials=true ;

$(function () {
    $.ajax({
        type:'get',
        url:'http://localhost:8081/list_user',
        dataType:'json',
        xhrFields: {
            withCredentials: true
        },
        success:function(data){
            console.log("data:",data);
        },
        error:function(err){
            console.error(err)
        }
    })
});
基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。 智能教学辅助系统 这是一个智能教学辅助系统的前端项目,基于 Vue3+TypeScript 开发,使用 Ant Design Vue 作为 UI 组件库。 功能模块 用户模块 登录/注册功能,支持学生教师角色 毛玻璃效果的登录界面 教师模块 备课与设计:根据课程大纲自动设计教学内容 考核内容生成:自动生成多样化考核题目及参考答案 学情数据分析:自动化检测学生答案,提供数据分析 学生模块 在线学习助手:结合教学内容解答问题 实时练习评测助手:生成随练题目并纠错 管理模块 用户管理:管理员/教师/学生等用户基本管理 课件资源管理:按学科列表管理教师备课资源 大屏概览:使用统计、效率指数、学习效果等 技术栈 Vue3 TypeScript Pinia 状态管理 Ant Design Vue 组件库 Axios 请求库 ByteMD 编辑器 ECharts 图表库 Monaco 编辑器 双主题支持(专业科技风/暗黑风) 开发指南 # 安装依赖 npm install # 启动开发服务器 npm run dev # 构建生产版本 npm run build 简介 本项目旨在开发一个基于开源大模型的教学实训智能体软件,帮助教师生成课前备课设计、课后检测问答,提升效率与效果,提供学生全时在线练习与指导,实现教学相长。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值