登录的实现原理,cookie,session

因为最近在搭博客,有涉及到登录这方面的功能。于是总结一下登录的实现原理。

HTTP 协议是无状态的,怎么能记录用户的登录状态呢?

鉴于 HTTP 是无状态协议,之前已认证成功的用户状态是无法通过协议层面保存下来的,即,无法实现状态管理,因此即使当该用户下一次继续访问,也无法区分他和其他的用户。但是HTTP请求每次都会带上cookie,所以,cookie是实现登录的基础。
当前端将用户名和密码发来之后,会将用户名和密码与数据库当中的用户信息进行比对,一致后,我们会在cookie中写入一些信息,标识此用户已经登录。(简单的原理,不涉及加密解密)

cookie的问题

由于考虑到安全性,用户的一些信息并不应该在cookie中传输,于是有了session,即:在用户端储存userid,在服务器端对应usernname
在这里插入图片描述

session

session意思为会话,它只保存在当前浏览器的会话当中。当发生第一次http请求后,服务器端生成一个独一无二的标识A写在发送这次请求的客户端的cookie中,然后下一次客户端请求会带上这个标识A,那么服务器端拿着这个标识A去查找对应的数据,从而识别用户和其认证状态。
session解决了cookie保存用户状态,并且不会泄露用户信息的问题。

session的问题

session解决了cookie的问题,但是本身在实现session的方式上也存在问题。因为session本身可以理解为一个变量,它储存在进程内存当中,所以带来以下问题
1.进程内存有限,访问量过大的时候,内存暴增怎么办?
2.进程上线后,内存是多进程的,进程之间内存无法共享,并且进程之间通信很麻烦
为了解决这个问题,于是有了redis来解决这个问题,redis的解决方法以后再解析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值