最近搭建一个后端框架,不知道该不该使用session,值得深入研究下session和token的区别

session和token的抉择

session: 用来保持用户与服务器的会话。浏览器在第一次访问服务器时,服务器会创建一个session,然后同时为该session生成一个唯一的会话sessionid,然后服务器再把sessionid(名字为JSESSIONID的cookie),以cookie形式发送给客户端。浏览器再次访问时会携带cookie中的sessionis,然后服务器根据sessionid找到对应的session进行匹配。

如果浏览器禁用了cookie/不支持cookie,可以通过URL重写的方式发送到服务。

简单的说,session就是个缓存,读取这个缓存的key存在客户端。

token:服务器不去存储用户的信息,一般是前端登录后,后端生成一个标识性字符串(token)给前端,之后前端每次请求都带上这个token,后端通过这个token获取对应的用户信息。

简单的说,token不需要服务器存储用户信息,但是每次要去解析这个token

区别:

session翻译为会话,token翻译为令牌。

session是空间换时间,token是时间换空间。

session和sessionid:服务器会保存一份,可能保存到缓存/数据库/文件。

token:服务器不需要记录任何东西,每次都是一个无状态的请求,每次都是通过解密来验证是否合法。

前后端分离建议使用token,小型的用户登录操作系统建议使用session

引申--选择了token之后 JWT 和 Oauth2的抉择

OAuth2用在使用第三方账号登录的情况(比如使用weibo, qq, github登录某个app)

JWT是用在前后端分离, 需要简单的对后台API进行保护时使用.(前后端分离无session, 频繁传用户密码不安全)

因此,做普通项目的PI开发,用JWT最为合适,后期真的做到了微信那种程度,需要别人到你这来授权登录,在用OAuth2。

使用JWT的建议:

因为JWT的header和payload部分都是可以解密出来的,所以不能放私密信息,所以建议不要放置用户名等信息,可以再用户注册地时候生成一个唯一字符串,作为用户唯一标识uuid,在payload中标识出来,类似于微信的openid。用户从一个客户端登录时,记录下用户的登录时间,精确到毫秒,避免同时点击登录时由于是秒而不能区分不同的客户端。缓存在服务器的时候用uuid作为key,登录时间作为value。客户端调用数据的时候检查登录时间区分不同客户端

php框架打印session,PHP框架搭建之session和token的抉择相关推荐

  1. php框架打印session,Session组件

    [TOC] ### 组件说明 > Lying的Session是内置组件,用于简单的操作session. > session支持多维数组操作,如`$session->set('user ...

  2. MySQL、JDBC、HTML、CSS、JavaScript、jQuery、tomcat、Http、Servlet、JSP、EL、JSTL、Maven、Cookie、Session(框架第一部分)

    第一章 MySQL 一 .数据库 1.什么是数据库? 所谓的数据库就是指存储和管理数据的仓库 2.数据库有哪些分类? 3.什么是关系型数据库? 底层以二维表的形式保存数据的库就是关系型数据库 stu- ...

  3. 实时计算框架:Flink集群搭建与运行机制

    一.Flink概述 1.基础简介 Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算.Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算.主要特性包 ...

  4. mybatis框架使用generator的快速搭建

    mybatis框架使用generator的快速搭建 首先建立一个maven项目,在idea中直接使用下图建立 然后按照以下步骤 使用generator工具快速生成,dao层,bean层,mapper层 ...

  5. python搭建django框架,Python之Web框架Django项目搭建全过程

    Python之Web框架Django项目搭建全过程 IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 注:可通过pip fre ...

  6. think php框架 跨域,ThinkPHP框架实现session跨域问题

    这篇文章主要介绍了ThinkPHP框架实现session跨域问题的解决方法,需要的朋友可以参考下 ThinkPHP的session跨域问题很多开发者都遇到过! 其实不管是ThinkPHP还是php本身 ...

  7. yii2 session mysql_Yii框架 session 数据库存储操作方法示例

    本文实例讲述了Yii框架 session 数据库存储操作方法.分享给大家供大家参考,具体如下: 在组件中声明session 组件开启数据库库存储 [ 'components' => [ 'db' ...

  8. 解决使用elementUI框架el-upload跨域上传时session丢失问题

    解决使用elementUI框架el-upload跨域上传时session丢失问题 参考文章: (1)解决使用elementUI框架el-upload跨域上传时session丢失问题 (2)https: ...

  9. 从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(三) (mini-cloud) 搭建认证服务(认证/资源分离版) oauth2.0 (中)

    本文承接上文<从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(三) (mini-cloud) 搭建认证服务(认证/资源分离版) oauth2.0 (上)> ...

最新文章

  1. Kali Linux攻防系统(三:在Kali Linux系统中配置安全测试浏览器及系统清理备份)
  2. scikit_image
  3. C# Hook原理及EasyHook简易教程
  4. docker4dotnet #2 容器化主机
  5. [luogu5008]逛庭院
  6. JDK数字格式,由星期几变为周几
  7. 信源编码与信道编码区别(十一)
  8. openwrt绑定ddns花生壳域名
  9. 智利车厘子的尺寸说明,给大家扫盲
  10. 手机联系人分组名字都没了_这个你连名字都没听过的城市,深藏着江西美食的功与名...
  11. python爬取胡歌相关视频弹幕,分析并制作词云
  12. python tableau_Tableau集成Python机器学习实践(下)
  13. 整数a和整数b间1的个数
  14. sony android mp3播放器,入手一年,详细聊聊 索尼ZX505、艾利和SR15 两款安卓播放器的使用体验...
  15. android手机可以设置屏幕锁定,Android手机屏幕锁定设置方法(九个点图案)
  16. 自增ID相同时报错: Database operation expected to affect 1 row(s) but actually affected 2 row(s)...
  17. 折线迷你图怎么设置_Excel2013如何使用迷你图展示数据?
  18. 通过opencv (python) 获得mynteye小觅双目图像
  19. 计算机应用技基础10018,北京关于全国计算机等级考试与自考课程衔接的安排
  20. 《Java学习笔记(第8版)》学习指导

热门文章

  1. 生产者消费者 读者写者
  2. CSS 提示 invalid property value
  3. Matlab自相关/互相关函数xcorr
  4. 构筑新基建算力底座,腾讯安全助力企业降本增效
  5. HTTP 502问题总结
  6. Python与兰顿蚂蚁
  7. “青少年模式”存在形同虚设?未成年保护法将加重监管!
  8. Nprogress的配置与使用
  9. 加载条nprogress配置
  10. Keil中的code关键字