什么是Cookie 它有什么作用 及如何使用Session-Cookie方案进行身份验证 总结
Cookie
和 Session
都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。
维基百科是这样定义 Cookie
的:
Cookies
是某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密)。
简单来说:Cookie
存放在客户端,一般用来保存用户信息。
下面是 Cookie
的一些应用案例:
- 我们在
Cookie
中保存已经登录过的用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了。除此之外,Cookie
还能保存用户首选项,主题和其他设置信息。 - 使用
Cookie
保存SessionId
或者Token
,向后端发送请求的时候带上Cookie
,这样后端就能取到Session
或者Token
了。这样就能记录用户当前的状态了,因为 HTTP 协议是无状态的。 Cookie
还可以用来记录和分析用户行为。举个简单的例子你在网上购物的时候,因为 HTTP 协议是没有状态的,如果服务器想要获取你在某个页面的停留状态或者看了哪些商品,一种常用的实现方式就是将这些信息存放在Cookie
如何在项目中使用Cookie呢?
我这里以springBoot项目做一个例子
设置 Cookie
返回给客户端
使用 Spring 框架提供的 @CookieValue
注解获取特定的 cookie 的值
读取所有的 Cookie
值
Cookie和Session的区别?
Session
的主要作用就是通过服务端记录用户的状态。 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session
之后就可以标识这个用户并且跟踪这个用户了。
Cookie
数据保存在客户端(浏览器端),Session
数据保存在服务器端。相对来说 Session
安全性更高。如果使用 Cookie
的一些敏感信息不要写入 Cookie
中,最好能将 Cookie
信息加密然后使用到的时候再去服务器端解密。
如何使用Session-Cookie方案进行身份验证
很多时候我们都是通过 SessionID
来实现特定的用户,SessionID
一般会选择存放在 Redis 中。举个例子:
- 用户成功登陆系统,然后返回给客户端具有
SessionID
的Cookie
。 - 当用户向后端发起请求的时候会把
SessionID
带上,这样后端就知道你的身份状态了。
关于这种认证方式更详细的过程如下:
- 用户向服务器发送用户名、密码、验证码用于登陆系统。
- 服务器验证通过后,服务器为用户创建一个
Session
,并将Session
信息存储起来。 - 服务器向用户返回一个
SessionID
,写入用户的Cookie
。 - 当用户保持登录状态时,
Cookie
将与每个后续请求一起被发送出去。 - 服务器可以将存储在
Cookie
上的SessionID
与存储在内存中或者数据库中的Session
信息进行比较,以验证用户的身份,返回给用户客户端响应信息的时候会附带用户当前的状态。
使用 Session
的时候需要注意下面几个点:
- 依赖
Session
的关键业务一定要确保客户端开启了Cookie
。 - 注意
Session
的过期时间。
原文地址:https://blog.csdn.net/2301_79438104/article/details/142793815
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!