最新要闻
- 焦点滚动:女子买老陈醋买到“老陈西昔”:雷碧、康帅傅、娃啥啥等山寨货防不胜防
- 全球观点:国内供不应求的红魔8 Pro亮相海外:配置变了
- 威武!北京跻身全球百强科技集群前三 研发强度超纽约
- 种植牙的高价:被打碎了
- 为一季度量产做准备!宁德时代申请注册“麒麟电池”商标
- MacBook Air迎15岁生日 首次亮相由乔布斯从信封取出
- 全球报道:市场被国产手游席卷了 日本:课税!
- 今日最新!男孩寒假送外卖:20天挣7700元 给妈妈2000买年货
- 热资讯!一加11R现身印度官网:低频版骁龙8+、120Hz高刷屏
- 当前资讯!法拉利超跑当婚车 雪天接亲上坡频繁打滑 网友:后驱车肯定滑
- 一次性塑料餐具:开始被禁了
- 新一代安卓机皇!三星Galaxy S23 Ultra拍照分辨率达12240x16320
- 环球热点评!旺旺大礼包 经典零食箱62元2.7斤 送礼囤货必备
- 极端寒流来袭:吉尔吉斯斯坦终年不冻“热湖”罕见被冰封
- 弟弟发现姐姐首饰装备库原地惊了:被骗好多年!网友求购买链接
- 天天热资讯!男子网购晾衣杆 却被告知2024年发货!客服回应:说错了
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
Cookie 会话身份验证是如何工作的?
在 Web 应用程序中,Cookie-Session是一种标准的身份验证方法。饼干,也被称为“sweet cookies”。类型为“小文本文件”,是指一些网站为了识别用户身份而存储在客户端的数据。Session的主要功能是通过服务器记录用户的状态。
在典型的在线购物场景中,用户浏览多个页面并将一些商品添加到购物车。尽管如此,系统并不知道是哪个用户进行了操作,因为HTTP协议是无状态的,所以服务端需要为不同的用户创建相应的Session来识别和跟踪这个用户。在服务器端保存Session的方式有很多种,比如保存到内存、数据库或者文件中。
我们看一下Cookie-Session的认证过程:
(资料图片仅供参考)
这是一个典型的 HTTP 客户端(浏览器)和 HTTP 服务器对话,服务器运行在同一台计算机(本地主机)上,包含以下步骤。
- 用户访问登录页面后,输入相应的用户名和密码进行登录操作。
- 在客户端发起登录请求。一般在浏览器环境下,可以通过AJAX或者Form发起登录请求。
- 当服务器通过认证时,将为认证成功的用户创建一个Session,并存储Session信息。之后服务器会通过HTTP响应头来设置SessionId,即HTTP响应头中会包含 的响应头信息Set-Cookie。如果认证失败,则提示用户进行相关操作。
- 认证成功后,用户访问页面获取用户信息,此时客户端会在HTTP请求头中携带cookie信息。
- 服务端接收到客户端发起的请求,获取cookie中存储的SessionId来验证用户身份,验证通过后返回相应信息。
下面我将使用Koa来介绍Cookie-Session的认证过程。首先我们来定义首页的路由:
// router.js路由器。get ( "/" , async ( ctx ) => { if (ctx.session.user ) { const { userName } = ctx.session.user ; ctx.body = ` < h1 > Cookie /Session Authentication 你好, ${userName} ` ; } else { ctx. “登录”);}});
在上面的代码中,我们首先会判断当前用户是否已经登录到web应用中。如果已登录,将显示与当前用户对应的问候消息。如果没有登录,会跳转到登录页面,所以我们需要注册登录页面的路由:
// router.js路由器。get ( "/login" , ( ctx ) => { if (ctx.session.user ) { ctx.redirect ( " /" ); } else { ctx.body = `
在上面的代码中,我们使用ctx.request.body获取用户输入的用户名和密码,然后判断输入的用户名和密码是否完全匹配。当然,在真实的web项目中,通常会判断输入的信息与数据库user表中的信息一致。此外,为确保系统的安全,用户的密码将被加密或散列。如果输入的用户信息完全匹配,我们将当前登录的用户信息设置到该ctx.session.user属性并重定向到首页。并且如果用户信息不匹配,页面上会显示相应的错误信息。
我们看一下登录成功后服务器返回的HTTP响应报文:
从上图可以看出,登录成功后,服务器返回的HTTP响应报文中会包含Set-Cookie响应头。之后我们打开Chrome开发者工具的Application Tab页面,可以看到已经设置好的Cookie信息:
对于大部分的Web应用,一般都会提供一个用户信息页面,让用户可以查看当前已经登录成功的用户信息。这里我们也注册了一个/getUserInfo路由,用于显示已登录的用户信息:
// router.js路由器。get ( "/getUserInfo" , async ( ctx ) => { if ( ctx.session.user ) { const { userName, userId } = ctx.session.user ; ctx.body = ` < div > UserName : ${userName} , UserId: ${userId}
用户登录成功后,访问web应用中的其他路由时,会发起相应的HTTP请求,请求头中会自动携带当前用户的Cookie信息,如下图:
除了上述功能,我们还需要注册一个路由来处理用户注销操作:
// router.js路由器。get ( "/logout" , async ( ctx ) => { ctx.session = null ; ctx.body = ` < h1 >成功注销 登录 ` ; });
同样我们看一下注销成功后服务器返回的HTTP响应报文:
已经描述了包含在 Web 应用程序中的路由。为了应用能够正常运行,我们还需要创建一个Koa应用,并配置koa-session、koa-bodyparser等中间件。具体代码如下:
// app.jsconst Koa = require ( "koa" );const app = new Koa ();const session = require ( "koa-session" );const bodyParser = require ( "koa-bodyparser" );常量端口 = 3000 ;const router = require ( "./router.js" );const CONFIG = { key : "sid" , maxAge : 86400000 , httpOnly: true , signed : true , rolling : false , renew : false , sameSite : null ,};应用程序。键= [ “bytefer” ];应用程序。use ( async function ( ctx, next ) { try{ await next ( );} catch (err) { ctx.status = err.status || 500 ; ctx.type= "html" ; CTX。body = "系统错误
" ; CTX。应用程序。发出(“错误”,错误,ctx);}});应用程序。使用(会话(配置,应用程序));应用程序。使用( bodyParser ());应用程序。使用(路由器。路由())。使用(路由器。allowedMethods());应用程序。on ( "error" , ( err, ctx ) => { 控制台. 日志(错误);});应用程序。listen (port, function ( ) { console . log ( `服务器运行在 http://localhost: ${port} ` );});
Cookie-Session的认证过程已经介绍过了,最后总结一下这种认证方式存在的一些问题。
饼干的缺陷
- 每次HTTP请求都会添加Cookies,无形中增加了流量。
- 安全性差,攻击者可以利用本地 cookie 进行欺骗和 CSRF 攻击。
- Cookie 大小限制在 4KB 左右,不足以满足复杂的存储要求。
会话缺陷
- session保存在服务器端,如果短时间内有大量用户,会影响服务器的性能。
- 可扩展性不好。当有多台服务器时,如何共享Session就会成为一个问题。也就是说当用户第一次访问服务器A,第二次请求转发给服务器B时,服务器B无从知晓其状态。
那么如何解决以上问题呢?解决方案之一是使用基于令牌的身份验证。在下一篇文章中,我将介绍JWT认证方式。有兴趣记得关注我哦。
如果需要更加全面的学好前端,也可以来参与我们的三十天学习计划,全程不涉及任何费用!这是一套免费的三十天挑战计划的课程体系,包含了html+css+云端部署的课程体系,可以通过钉钉群里学习,有问题在群里可以提问,同时每节课还安排有作业,配套有阶段项目练习和综合项目实战,目的是帮助大家夯实前端基础,轻松入门到前端行业
为帮助到一部分同学不走弯路,真正达到一线互联网大厂前端项目研发要求,首次实力宠粉,打造了《30天挑战学习计划》,内容如下:
HTML/HTML5,CSS/CSS3,JavaScript,真实企业项目开发,云服务器部署上线,从入门到精通
- PC端项目开发(1个)
- 移动WebApp开发(2个)
- 多端响应式开发(1个)
共4大完整的项目开发 !一行一行代码带领实践开发,实际企业开发怎么做我们就是怎么做。从学习一开始就进入工作状态,省得浪费时间。
从学习一开始就同步使用 Git 进行项目代码的版本的管理,Markdown 记录学习笔记,包括真实大厂项目的开发标准和设计规范,命名规范,项目代码规范,SEO优化规范
从蓝湖UI设计稿 到 PC端,移动端,多端响应式开发项目开发
- 真机调试,云服务部署上线;
- Linux环境下 的 Nginx 部署,Nginx 性能优化;
- Gzip 压缩,HTTPS 加密协议,域名服务器备案,解析;
- 企业项目域名跳转的终极解决方案,多网站、多系统部署;
- 使用 使用 Git 在线项目部署;
这些内容在《30天挑战学习计划》中每一个细节都有讲到,包含视频+图文教程+项目资料素材等。只为实力宠粉,真正一次掌握企业项目开发必备技能,不走弯路 !
过程中【不涉及】任何费用和利益,非诚勿扰 。
如果你没有添加助理老师微信,可以添加下方微信,说明要参加30天挑战学习计划,来自公众号!老师会邀请你进入学习,并给你发放相关资料。
30 天挑战学习计划 Web 前端从入门到实战 | arry老师的博客-艾编程
Cookie 会话身份验证是如何工作的?
世界速看:以太坊签名从数学原理到安全应用
焦点滚动:女子买老陈醋买到“老陈西昔”:雷碧、康帅傅、娃啥啥等山寨货防不胜防
全球观点:国内供不应求的红魔8 Pro亮相海外:配置变了
威武!北京跻身全球百强科技集群前三 研发强度超纽约
世界快资讯:Matplotlib绘制散点图与条形图
全球实时:Hack The Box系列——【Markup】XML外部实体注入(XXE)
算法学习笔记(11): 原根
【全球快播报】ASP.NET Core+Element+SQL Server开发校园图书管理系统(一)
Blazor技术入门
种植牙的高价:被打碎了
为一季度量产做准备!宁德时代申请注册“麒麟电池”商标
MacBook Air迎15岁生日 首次亮相由乔布斯从信封取出
全球报道:市场被国产手游席卷了 日本:课税!
今日最新!男孩寒假送外卖:20天挣7700元 给妈妈2000买年货
热资讯!一加11R现身印度官网:低频版骁龙8+、120Hz高刷屏
当前资讯!法拉利超跑当婚车 雪天接亲上坡频繁打滑 网友:后驱车肯定滑
一次性塑料餐具:开始被禁了
全球热议:关于GIT使用的扫盲知识
【深度解读】卫星通信工作频段
新一代安卓机皇!三星Galaxy S23 Ultra拍照分辨率达12240x16320
环球热点评!旺旺大礼包 经典零食箱62元2.7斤 送礼囤货必备
极端寒流来袭:吉尔吉斯斯坦终年不冻“热湖”罕见被冰封
弟弟发现姐姐首饰装备库原地惊了:被骗好多年!网友求购买链接
天天热资讯!男子网购晾衣杆 却被告知2024年发货!客服回应:说错了
【时快讯】爱优腾收费贵、限制多 网友奉上免费视频攻略:全靠Intel
每日焦点!车祸后发视频庆大难不死 结果被殡葬号关注!男子:别介
热讯:大海送“年货”!烟台海边再现大量海肠 大家抢疯:有人一会捞3千斤赚大
环球时讯:配F1赛车同款发动机能追中国高铁!梅赛德斯AMG ONE正式交付
【全球热闻】液流电池有望“弯道超车”?新技术使其尺寸锐减75% 成本更低
视点!蔚来AR眼镜专利公布:可稳定显示车载信息
AITO问界降价效果一般 李想:销量少的产品、没资格成为别人的竞品
索尼PS5千万别长期竖向放置?反转了!维修店:原装主机别担心
Adversarial Active Learning based Heterogeneous GNN for Fake news Detection-ICDM
环球要闻:linux科普:如何标准的安装和升级软件
vue事件修饰符
《流浪地球2》导演郭帆教刘德华济宁话拜年:父老乡亲们新年快乐
当前播报:不怕零下40℃极寒!最“抗冻”复兴号将在“最北”高铁首次开行
美国一州提议“禁售电动车”:石油、天然气太挣钱了
快报:高手在民间!男子7厘米壶内壁画生肖兔
河北女司机发现大量车“逆行” 真相来了:都没逆行 路口设计问题
环球速讯:AcWing. 1072 树的最长路径
【天天聚看点】微信对话生成器,WeChat对话生成,可生成文字、语音、转账、红包,朋友圈装X神器~
天天简讯:Spring Boot 项目打包 .exe 可执行程序,实战来了!
41光年远 韦伯望远镜首次发现系外行星:跟地球几乎一样大
【热闻】连刷10小时B站无问题!联想小新Pro 14搭载75Wh大电池
天天速读:《黑神话:悟空》定档2024年夏天!NVIDIA:将支持光追和DLSS 3
暴风再被限消未履行总额超8亿 昔日风光变为凄惨落幕
【环球聚看点】十二生肖为什么没有猫咪?真相揭开
如何安装球形门锁
Opengl ES之RGB转NV21
快看点丨A Representation Learning Framework for Property Graphs-KDD19
非常流行的vue库,看这一篇就够了
理想车主夜间驾车中控显示有人追车?官方回应:视觉感知算法Bug
今日精选:一驾校打广告称不识字也能考驾照:3次考不过退费
55%~100%五种浓度:怡浓纯黑巧克力35元起400g大促
环球通讯!开电动车返乡要三思 网友晒高速服务区充电现状:已排成长队
联想小新Pro超能本2023升级140W快充:半小时就可回血66%
算法学习笔记(10): BSGS算法及其扩展算法
前沿资讯!2023年了 游戏还在背锅
第一款8K显示器发售6年:居然没人接班了
天天快资讯:丈夫称老家有别墅 女子回村直呼上当:网友调侃诚不欺我 真纯天然
被中国游客狠狠抛弃:韩国人口连续三年减少 女多男少拉不动内需
环球播报:便宜了2.5元 2023年春节档电影票价格7年来首次下降:你愿意去看吗?
合资家轿之王!新款日产轩逸e-POWER曝光:百公里仅需4升油
今热点:一箭14星成功升空 卫星首图回传:路面汽车清晰可见
AtCoder Beginner Contest 285 解题报告
新一代云原生日志架构 - Loggie的设计与实践
皮俑是什么做成的?皮俑为什么救吴邪?
擅长画虎的画家是?擅长画虎的十大画家
神奇宝贝的观看顺序是什么?神奇宝贝的大结局是什么?
用上半固态电池!赛力斯发布海外新车型SERES 5:订单超2万
国产骄傲!中国年度十大畅销新能源车型:外资仅有特斯拉上榜
每日播报!游客滑雪失控致女生被撞倒后抽搐 医生:危险数极高、常见骨折
拿老款忽悠当新款卖 女车主退车被日系4S店老板辱骂
风调雨顺的意思是什么?风调雨顺的下联是什么?
小年为什么分南方和北方?小年为什么吃麻糖?
液晶显示器故障怎么解决?液晶显示器故障维修大全
qq空间打不开是什么原因?qq空间打不开怎么办?
cf怎么鬼跳没声音?cf鬼跳教程按键手法
土豆网怎么下载?土豆网怎么没有了?
环球热讯:1.PyQt5【窗口组件】小部件-QWidgt
阿里云邮箱怎么注册?阿里云邮箱怎么发送邮件?
女粉丝入手小米13 曾是十年资深果粉:被小米和雷军打动
当前滚动:二手车商要“气晕”!美国已有特斯拉新车价格低于二手车
低调的江西 盛产新能源富豪
2023央视春晚主持人阵容公布:首次迎来双90后
每日头条!衡山雾凇火了 多名游客滑冰下山很危险 景区调整开放时间
Ansible 学习笔记 - 批量巡检站点 URL 状态
世界观速讯丨node和npm如何升级版本
世界信息:把车变成船 比亚迪真会玩
天天报道:《中国奇谭》值得这么夸吗?
【世界播资讯】首搭麒麟电池 全球MPV续航最长!极氪009开启交付
三星Galaxy S23系列售价泄露:12GB+1TB版本超1万元
行驶1900多米!祝融号已在火星留下近4000个“中”字
C#代码整洁之道读后总结与感想
【快播报】私家车与油罐车高速并排堵路 货车司机看不下去 主动让路
环球消息!男子开车时被激光笔照射 瞬间眼前一片黑!专家称可能会永久损伤
世界观点:小编要失业了 美国科技媒体CNET用AI写文章:读者完全没发现
天天快看点丨马斯克回应车主维权:涨价也没人给我补差价 就这吧