node中cookie与session的应用,5分钟搞定,学习前端开发只要这些东西

}

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] = {};

}

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

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

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

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

总结

我在成长过程中也是一路摸爬滚打,没有任何人的指点,所以走的很艰难。例如在大三的时候,如果有个学长可以阶段性的指点一二,如果有已经工作的师兄可以告诉我工作上需要什么,我应该前面的三年可以缩短一半;后来去面试bat,失败了有5、6次,每次也不知道具体是什么原因,都是靠面试回忆去猜测可能是哪方面的问题,回来学习和完善,当你真正去招人的时候,你就会知道面试记录是多么重要,面试官可以从面试记录里看到你的成长,总是去面试,总是没有成长,就会被定义为缺乏潜力。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

image
定义为缺乏潜力。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

[外链图片转存中…(img-ib0MqqZX-1710830193355)]
image

  • 27
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值