前端实现登录 -- Cookie + Session 登录

101 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第3天,点击查看活动详情

前言

登录功能几乎是每个项目中必用到的一个功能,今天我就来介绍一下使用CookieSession实现登录功能。让我们来看看输入完账号密码,敲完回车键之后都发生了什么。

Cookie

首先,我们先来了解一下什么使CookieCookie 是服务器端发送给客户端的一段特殊信息,以文本的形式存放在客户端,客户端每次发送请求时都会带上这些特殊信息。

Session

有了 Cookie 服务器就可以获取客户端传递过来的信息,因此我们还需创建 Session对象对信息进行验证。

Session 对象可以存储用户的信息。存储在 session 对象中的用户的信息,所有页面都是可用。

登录流程

首次登录流程:

graph TD
用户 --访问--> xxx.com/index.html
xxx.com/index.html --输入账户密码--> 服务器校验账户密码
服务器校验账户密码 --校验成功--> 创建保存SessionId
创建保存SessionId --Set-Cookie--> 将SessionId写入Cookie
将SessionId写入Cookie --登录成功访问--> xxx.com/index.html

登录完成之后直接使用 Cookie 进行身份验证流程:

graph TD
用户 --访问--> xxx.com/index.html
xxx.com/index.html --传递Cookie--> 服务器校验Cookie
服务器校验Cookie --校验成功访问--> xxx.com/index.html
服务器校验Cookie --校验失败--> 重新登录

缺点

虽然我们使用了 Cookie 和 Session 的方式实现了登录,但这也势必会存在一些问题:

首先,由于 SessionId 存放在 Cookie 中,所以无法避免 CSRF 攻击;

其次,服务端需要对接大量的客户端,需要存放大量的 SessionId,会导致服务器压力过大,增加服务器端维护成本;

结语

本文到此结束

如果大家还有什么其他想法,欢迎在评论区交流!