面试题解-理解cookie、session和token
创始人
2024-06-01 07:17:00
0

项目vue+springboot

1、token

用户填写密码账号发送至后端,由后端生成token,返回给前端,前端把它存放起来,如放在cookie或者localStorage里面

前端向服务器发起请求时在请求头携带token,判断用户身份给与反应。

//后端验证token
public class JwtInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//如果不是映射到方法直接通过if (!(handler instanceof HandlerMethod)) {return true;}//从 http 请求头中取出 tokenString token = request.getHeader("Authorization");if (token == null) {throw new RuntimeException("无 token ,请重新登陆");}//验证 tokenJwtUtil.checkSign(token);//验证通过后, 这里测试取出JWT中存放的数据//获取 token 中的 userIdString salt = JwtUtil.getSalt(token);String phone = JwtUtil.getPhone(token);String password = JwtUtil.getPassword(token);System.out.println("我是JWTInter-"+password+"==="+phone);//获取 token 中的其他数据return true;}
}

2、cookie

Cookie可以弥补HTTP协议无状态的不足,在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话,比如百度搜索也是设置了cookie
在浏览器地址栏输入javascript:alert (document. cookie)就可以查看某个网站颁发的Cookie,JavaScript脚本会弹出一个对话框显示本网站颁发的所有Cookie的内容

(1)客户端发送登录请求,后端set-cookie返回给客户端,Cookie实际上是一小段的文本信息,客户端收到带有cookie的请求后,那么下次浏览器就会在请求头自动携带cookie
(2)服务端接收客户端之后的请求,验证cookie来判断
在这里插入图片描述
session可以cookie一起使用的
token可以和cookie一起使用,存放在cookie中

 public String setCookies(HttpServletResponse response){//HttpServerletRequest 装请求信息类//HttpServerletRespionse 装相应信息的类Cookie cookie=new Cookie("sessionId","CookieTestInfo");response.addCookie(cookie);return "添加cookies信息成功";}

3、session

客户端发送登录请求,服务端创建session,并保存起来(可以保存在内存、数据库、NoSQL中),并将session的唯一标识设置在cookie中返回给客户端

//登录时,将userId存入session中session.setAttribute("userId", user.getUserId());
@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//获取到session信息HttpSession session = request.getSession();Integer userId = (Integer) session.getAttribute("userId");if (userId == null) {//登录信息不存在,请重新登录return false;}return true;}

区别
1、cookie、token由服务器生成,保存在客户端,session存储在服务端
2、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,session存储大小无限制,token体积很小
3、cookie不是很安全, 别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session
4、session会在一定时间内保存在服务器上。当访问增多,就会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
5、cookie不能跨浏览器,不支持跨域访问,不支持手机端方案。token允许跨域访问
6、生命周期:
cookie默认在会话结束后直接销毁,cookie可以设置过期时间。
session也有过期时间的概念,默认为30分钟,可以通过tomcat、web.xml等方式进行配置。
token无法主动过期,只能等待它达到过期时间后才会失效。

相关内容

热门资讯

“纯粮酿造+科技创新”双轮驱动... 转自:北京商报近日,国家工业和信息化部发布《首批中国消费名品名单》,北京红星股份有限公司旗下的“红星...
这就是山西! 来源:新华社微信公众号清风穿过巍峨太行轻抚大地万物碧天白云在汾河的涟漪中缓缓流动太行山风光。新华社记...
山河显影丨同仇敌忾赴国难 众志... 转自:中工网生死存亡之际,经过中国共产党不懈努力,以国共两党合作为基础,中国各族人民、各民主党派、各...
2021年创业好项目 急需要 ... 眼下2020年马上就要过去了,我们即将迎来崭新的一年。2020年,因为疫情原因,许多人面临着收入锐减...
深圳旁,藏着个千亿镇 中国经济第一大省广东,盛产千亿镇。今年前5个月,中国手机产量5.7亿台,华为、小米、vivo、OPP...
【菲斯蒂尔内衣】菲斯蒂尔内衣创... 菲斯蒂尔内衣加盟优势菲斯蒂尔内衣利润分析:菲斯蒂尔内衣在市场上有着重要的市场地位,是深受女性消费者喜...
“父债”子如何偿?吴江法院“试... 转自:扬子晚报近日,苏州市吴江区人民法院根据一名继承人的申请,受理首例申请遗产清理案件,探索借助类个...
上班族小本创业项目选项目 上班... 适合上班族创业的项目:环保健康餐馆配送中心可分为城市部,农村部,由城乡妇女协同运作。农村部负责种植,...
龙光集团境内债重组进展:大部分... 7月7日,澎湃新闻获悉,深圳市龙光控股有限公司境内债券重组中,包括H光耀07A、PR龙联08A等在内...
最新适合上班族的创业项目 适合... 上门承办宴席,这对于现在很多地区,人们在村里操办喜事,而又找不到人手的时候,一般会请专门的承办宴席的...