面试题解-理解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无法主动过期,只能等待它达到过期时间后才会失效。

相关内容

热门资讯

氢能正成为六盘水高质量发展新引... 转自:贵州日报 本报讯(记者 尚宇杰 顾冰洁 郭立)5月10日,六盘水氢能示范应用暨美锦华宇煤焦氢二...
川报早读丨9月见 “金熊猫”在... 转自:四川日报 今年是中国与意大利建交55周年,近日,“...
全市防汛抗旱工作会议召开 来源:无锡日报全市防汛抗旱工作会议召开进一步强化风险意识底线思维 严阵以待打好防灾保安主动仗  5月...
老街区 新活力 转自:贵州日报4月19日,黔东南州黎平县肇兴侗寨开展的传统民俗巡游活动,独具魅力。贵州日报天眼新闻记...
微风露台品人生 日落西山,余霞成绮,轻柔的晚风掠过600年古树梢,拂过天坛祈年殿的鎏金宝顶,抚上观坛露台上人们的脸颊...
辽宁:造船业破浪前行 大连船舶重工集团有限公司码头,大型LNG运输船正在建造。 辽宁日报特约记者 王华 摄  近日,“绿色...
王毅同巴基斯坦副总理兼外长达尔... 转自:新华社新华社北京5月10日电 2025年5月10日,中共中央政治局委员、外交部长王毅应约同巴...
贵阳市南明区着力推进国家特殊教... 转自:贵州日报 本报讯(记者 谌贵璇)贵阳市南明区自今年2月获批“国家特殊教育改革实验区”以来,围绕...
推动统一大市场先行区建设 2023年,广东省与国家市场监督管理总局在广州签署合作框架协议,共同建设粤港澳大湾区统一大市场公平竞...
一条越走越宽广的大道 转自:贵州日报 新华社记者 郝薇薇 杨依军又一次飞越亚欧大陆,又一次走进满目春色的莫斯科。在和煦的阳...
匠心守护放心药 转自:辽宁日报 本报记者 许蔚冰 人民大会堂金色穹顶下,姜婷胸前的五一劳动奖章闪耀着光芒。这位来自本...
当多日游只需一张票 正是旅游好时节。广西南宁青秀山公园、贵州安顺黄果树瀑布、湖南张家界国家森林公园等知名5A级景区,不约...
把“中国奶瓶”牢握在手 今年2月份,参加完民营企业座谈会,黑龙江飞鹤乳业有限公司董事长冷友斌倍感振奋。他说,“会议强调要坚定...
咖啡远行记 咖啡是全球第二大饮品。据统计,全球平均每天约消耗22.5亿杯咖啡。从清晨唤醒都市的第一缕醇香到横跨五...
巴基斯坦外交部:巴方对印度侵略... 转自:新华社新华社伊斯兰堡5月10日电(记者杨恺)巴基斯坦外交部10日发表声明说,为了地区和平与稳定...
我省首届中小学人工智能教育活动... 转自:辽宁日报 本报讯 记者白昊报道 5月10日,我省首届中小学人工智能教育活动周在沈阳启动,亮点纷...
沈阳“5G-A”商用一年 网速... 转自:沈阳日报  最近有一些沈阳市民发现自己手机上的信号栏,5G标识后面多了个字母“A”。5G-A是...
“科转沈阳”赋智惠企活动加速科... 转自:沈阳日报  5月9日,2025“科转沈阳”赋智惠企高校院所科技成果路演浑南区专场活动,在浑南科...
辉山街道举办2025年春季高校... 转自:沈阳日报  本报讯(沈阳日报、沈报全媒体记者李莉)5月9日,沈北新区辉山街道与辽宁装备职业技术...
伊朗外长:伊朗坚持和平利用核能... 转自:新华社新华社多哈5月10日电(记者汪强 陈霄)伊朗外长阿拉格齐10日在多哈出席第四届阿拉伯-伊...