node中cookie与session的应用,开发前端学习

cookieStr.split(‘;’).forEach(ele => {

if(!ele){

return; //做兼容性的处理

}

const arr = ele.split(“=”);

const key = arr[0];

const val = arr[1];

req.cookie[key] = val;

});

然后在管理user的路由中去检查登录的状态,完成登录验证,通常情况下cookie是由前端发送在这里只需要去做一个

储存即可。具体检查登录验证的代码如下,只要所存入的cookie中有username即可。

if(method === ‘GET’ && req.path === ‘/api/user/login-test’){

if(req.cookie.username){

return Promise.resolve(new SuccessModel('req.cookie.username is ’ , req.cookie.username));

}

return Promise.resolve(new ErrorModel(‘尚未登录’));

}

在这里暂时将登录验证的请求方式通过后台来设置cookie缓存,因此在这里的代码实现如下:

if(method === ‘GET’ && req.path === ‘/api/user/login’){

// const { username, password } = req.body;

const { username, password } = req.query;

const result =  UserMes(username ,password);

return result.then(data => {

console.log(username,password);

if(data.username){

res.setHeader(‘Set-Cookie’,`username=‘${username}’; path=‘/’;`);

return new SuccessModel();

}

return new ErrorModel(‘登录失败’);

})

// if(result){

//     return new SuccessModel();

// }else{

//     return new ErrorModel(‘登录失败’);

// }

}

**cookie权限设置

1.给cookie做权限设置主要是为了让前端不能任意的对cookie做更改,保证cookie的安全性,具体设置权限

的方式是直接在后台设置路由的地方直接设置httpOnly。

2.在这里还需要注意的一点就是,当在给浏览器设置cookie时,需要我们手动的去除掉空格,如果不清除,

浏览器会自动的帮我们在设置cookie的地方自动的加上空格,这样会使得之后创建的cookie被前面的所覆盖

3.在这里我们还可以对cookie设置最大的缓存时间,具体的设置方式是通过setTime()和getTime()一起使用**

具体的代码实现如下:

const getCookieExpires = () => {

const d = new Date();

d.setTime(d.getTime() + (24 * 60 * 60 * 1000));

console.log('d.toGMTString() is ', d.toGMTString());

return  d.toGMTString();

}

最后只需要在设置cookie的地方去调用这个方法即可。

session介绍与session设置

对于cookie设置产生的问题,如果在浏览器端直接去返回username,这样的方式会很容易就会暴露用户的信息,对于

这样的处理方式显然是不可取的。最好的方式就是cookie中储存userid(这个是随机生成的),server端去对应username

那么这个时候就需要去设置session。因此对于session可以概述为server端储存用户信息

**1.在这里我们首先设置一个全局变量去存放session数据,其代码为const SESSION_DATA = {}

2.如何去解析session,需要去设置两个变量第一个是needSetCookie,第二个是userId,第一个变量用来判断是否需要去

设置cookie,第二个参数用于进行userId的设置。其逻辑大概如下所述: 1.首先判断是SESSION_DATA(userId)是否

存在,如果不存在就将其设置为一个空对象,如果存在就需要去设置userId,对于userId只需要将其赋值成一个时间戳加上

一个随机数,就可以生成一个唯一表示。最后只需要使用req.session = SESSION_DATA[userId];就可以去设置userId**

具体的实现代码如下:

//首先将req.cookie.userid赋值给uerId,在session中只需要判断cookie中是否存在userId即可

let needSetCookie = false;

let userId = req.cookie.userid;  //两者都是变量而不是常量

if(userId){

if(!SESSION_DATA[userId]){

SESSION_DATA[userId] = {};

}

} else {

needSetCookie = true;

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

结尾

正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

戳这里免费领取前端学习资料

该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。

以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。

戳这里免费领取前端学习资料

前端学习书籍导图-1

  • 23
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值