阅读 157

Cookie和Session

Cookie和Session

文章目录

前言

1.cookie

1.1 cookie概念

1.2 cookie工作原理

2.Session

2.1 概念

2.2实现原理

2.3 Servlet对象

3.cookie vs session

前言

目前登录页面+后端登录功能,存在的问题?


访问敏感资源(前端的敏感资源,后端的敏感资源),未登录不允许访问,前端页面可以跳转到登录页面,后端接口(servlet):返回401状态码(Unauthorized未授权的访问),返回json数据。

技术实现:Session和Cookie,目前比较好的解决方案是(Filter);次一点的解决方案:

(1)提供一个校验用户是否登录的接口,每次前端都请求。

(2)每个Servlet都去验证一下是否登录。

1.cookie

1.1 cookie概念

定义:cookies是存储在客户端计算机上的文本文件,并保留了用户的各种跟踪信息。

作用:用于客户端本地保存数据(一般是用户信息)。

用于场景:免登录(remember me)

1.2 cookie工作原理

客户端向服务区发起登录请求;

服务器脚本向浏览器发送一组Cookies。例如:姓名、年龄或识别号码;

浏览器将这些信息存储在本地计算机上,以备将来使用;

当下一次浏览器向Web服务器发送任何请求时,浏览器会把这些Cookies信息发送到服务器,服务器将使用这些信息来识别用户。


2.Session

2.1 概念

定义:session 是存储在服务器上的文本文件,并保留了用户的各种跟踪信息。会话,登录后,注销前且未注销,都属于一次会话。

作用:会话保持,如完成用户的登录与状态保持,因为在服务器端,所以相对安全一些。

登录时,服务端保存一个用户的会话(Session),访问敏感资源的时候,校验是否有Session。


2.2实现原理



2.3 Servlet对象

HttpSession对象


Servlet还提供了HttpSession接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关用户信息的方式。

Servlet容器使用这个接口来创建一个HTTP客户端和HTTP服务器之间的session会话。会话持续一个指定的时间段,跨多个连接或页面请求。

每次敏感资源访问时,都会获取HttpSession

如果获取到,并且session.getAttribute(键)有数据,就是登录(系统通过请求的会员卡查询身份证)否则拒绝访问。

我们可以通过调用HttpServletRequest的公共方法getSession()来获取HttpSession对象,如下所示:

HttpSession session=request.getSession();


//重载

HttpSession session=request.getSession(boolean create);

1

2

3

4

HttpSession对象的方法


public Object getAttribute(String name);

//该方法返回在该session会话中指定的对象,如果没有指定名称的对象,则返回null

public void removeAttribute(String name);

//该方法将从该session会话中移除指定名称的对象(注销功能)

public void setAttribute(String name,Object value);

session.setAttribute(键,用户信息);

//使用该方法可以绑定卡和身份证

//该方法使用指定的名称绑定一个对象到该session对象

1

2

3

4

5

6

7

8

3.cookie vs session

两者有什么区别呢?


Cookie以文本文件格式存储在浏览器中,而session存储在服务端

因为每次发起 Http 请求,都要携带有效Cookie信息,所以Cookie一般都有大小限制,以防止增加网络压力,,一般不超过4k。

可以轻松访问cookie值但是我们无法轻松访问会话值,因此session方案更安全。

————————————————

版权声明:本文为CSDN博主「jade*」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_52206533/article/details/116059690


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐