php框架打印session,PHP框架搭建之session和token的抉择
最近搭建一个后端框架,不知道该不该使用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的抉择相关推荐
- php框架打印session,Session组件
[TOC] ### 组件说明 > Lying的Session是内置组件,用于简单的操作session. > session支持多维数组操作,如`$session->set('user ...
- MySQL、JDBC、HTML、CSS、JavaScript、jQuery、tomcat、Http、Servlet、JSP、EL、JSTL、Maven、Cookie、Session(框架第一部分)
第一章 MySQL 一 .数据库 1.什么是数据库? 所谓的数据库就是指存储和管理数据的仓库 2.数据库有哪些分类? 3.什么是关系型数据库? 底层以二维表的形式保存数据的库就是关系型数据库 stu- ...
- 实时计算框架:Flink集群搭建与运行机制
一.Flink概述 1.基础简介 Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算.Flink被设计在所有常见的集群环境中运行,以内存执行速度和任意规模来执行计算.主要特性包 ...
- mybatis框架使用generator的快速搭建
mybatis框架使用generator的快速搭建 首先建立一个maven项目,在idea中直接使用下图建立 然后按照以下步骤 使用generator工具快速生成,dao层,bean层,mapper层 ...
- 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 ...
- think php框架 跨域,ThinkPHP框架实现session跨域问题
这篇文章主要介绍了ThinkPHP框架实现session跨域问题的解决方法,需要的朋友可以参考下 ThinkPHP的session跨域问题很多开发者都遇到过! 其实不管是ThinkPHP还是php本身 ...
- yii2 session mysql_Yii框架 session 数据库存储操作方法示例
本文实例讲述了Yii框架 session 数据库存储操作方法.分享给大家供大家参考,具体如下: 在组件中声明session 组件开启数据库库存储 [ 'components' => [ 'db' ...
- 解决使用elementUI框架el-upload跨域上传时session丢失问题
解决使用elementUI框架el-upload跨域上传时session丢失问题 参考文章: (1)解决使用elementUI框架el-upload跨域上传时session丢失问题 (2)https: ...
- 从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(三) (mini-cloud) 搭建认证服务(认证/资源分离版) oauth2.0 (中)
本文承接上文<从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(三) (mini-cloud) 搭建认证服务(认证/资源分离版) oauth2.0 (上)> ...
最新文章
- Kali Linux攻防系统(三:在Kali Linux系统中配置安全测试浏览器及系统清理备份)
- scikit_image
- C# Hook原理及EasyHook简易教程
- docker4dotnet #2 容器化主机
- [luogu5008]逛庭院
- JDK数字格式,由星期几变为周几
- 信源编码与信道编码区别(十一)
- openwrt绑定ddns花生壳域名
- 智利车厘子的尺寸说明,给大家扫盲
- 手机联系人分组名字都没了_这个你连名字都没听过的城市,深藏着江西美食的功与名...
- python爬取胡歌相关视频弹幕,分析并制作词云
- python tableau_Tableau集成Python机器学习实践(下)
- 整数a和整数b间1的个数
- sony android mp3播放器,入手一年,详细聊聊 索尼ZX505、艾利和SR15 两款安卓播放器的使用体验...
- android手机可以设置屏幕锁定,Android手机屏幕锁定设置方法(九个点图案)
- 自增ID相同时报错: Database operation expected to affect 1 row(s) but actually affected 2 row(s)...
- 折线迷你图怎么设置_Excel2013如何使用迷你图展示数据?
- 通过opencv (python) 获得mynteye小觅双目图像
- 计算机应用技基础10018,北京关于全国计算机等级考试与自考课程衔接的安排
- 《Java学习笔记(第8版)》学习指导