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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
![](https://i-blog.csdnimg.cn/blog_migrate/06dd8650215729dc92b7fa667882d4dc.jpeg)
结尾
正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。
以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。
该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。
以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。