Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。

Token是什么

token就相当于客户端登录的账号的唯一标识,在做一些数据请求的时候,后台会要求在请求头中携带token,如果没有token,或者token过期了,那么这时候就会对这个客户端进行返回响应的数据,然后前端在解析这些数据,判断是token过期,还是没有携带token,然后让用户进行相应的操作。总而言之,token是在向后台请求数据的时候必不可少的。如果没有token,那么后台要么不会返回响应的数据,要么就会返回一些无关紧要的数据。

简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。

为什么要使用Token

  • Token 完全由应用管理,所以它可以避开同源策略
  • Token 可以避免 CSRF 攻击,安全性高
  • Token 可以是无状态的,可以在多个服务间共享

接下来了解一下request和session的区别

  • request 指在一次请求的全过程中有效,即从http请求到服务器处理结束,返回响应的整个过程,存放在HttpServletRequest对象中。在这个过程中可以使用forward方式跳转多个jsp。在这些页面里你都可以使用这个变量。request是用户请求访问的当前组件,以及和当前web组件共享同一用户请求的web组件。如:被请求的jsp页面和该页面用<include>指令包含的页面以及<forward>标记包含的其它jsp页面;
  • Session是用户全局变量,在整个会话期间都有效。只要页面不关闭就一直有效(或者直到用户一直未活动导致会话过期,默认session过期时间为30分钟,或调用HttpSessioninvalidate()方法)。存放在HttpSession对象中 ,同一个http会话中的web组件共享它。

token主要有两个作用:

  1. 防止表单重复提交(防止表单重复提交一般还是使用前后端都限制的方式,比如:在前端点击提交之后,将按钮置为灰色,不可再次点击,然后客户端和服务端的token各自独立存储,客户端存储在Cookie或者Form的隐藏域(放在Form隐藏域中的时候,需要每个表单)中,服务端存储在Session(单机系统中可以使用)或者其他缓存系统(分布式系统可以使用)中)
  2. 用来作身份验证,防止表单重复提交,主要的理念是,客户端初始化的时候,一般就是刚刚进入页面的时候就调用后端代码,后端代码生成一个token,返回给客户端,客户端储存token(可以在前台使用Form表单中使用隐藏域来存储这个Token,也可以使用cookie),然后就将request(请求)中的token与(session)中的token进行比较

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:

  1. 客户端使用用户名跟密码请求登录
  2. 服务端收到请求,去验证用户名与密码
  3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
    客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  5. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据

Token登录原理分析相关推荐

  1. QQ网页微信、QQ二维码登录原理分析(整理)

    QQ和微信的登录过程中,使用二维码登录,这里根据网上的一些资料简单总结: 二维码是包含二进制数据的黑白图片.当进行登录时,服务器生成一条二维码信息,发送给PC客户端.这时,手机终端(已经存在指定账号登 ...

  2. 模拟新浪微博登录-原理分析到实现

    原文地址:http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/ 上一篇文章 小试牛刀:使用Python模拟登录知乎 介绍了如 ...

  3. 单点登录原理分析及CAS实战

    前端需要了解的 SSO 与 CAS 知识

  4. 详细分析本机号码一键登录原理

    详细分析本机号码一键登录原理! 很多 APP 的目前都支持「本机号码一键登录」功能.本机号码一键登录是基于运营商独有网关认证能力推出的账号认证产品.用户只需一键授权,即可实现以本机号码注册/登录,相比 ...

  5. php ucenter原理,深入挖掘Discuz Ucenter同步登录过程原理分析

    深入挖掘discuz ucenter同步登录过程原理分析,哈哈,其实纯属标题党,主要就是做了一个思路分析而已. Discuz是Ucenter的一个应用. Ucenter包含Server和Client, ...

  6. 手机扫描网页二维码登录实现原理分析

    阅读本文大概需要 5 分钟. 相信我们每个人经历过这样的场景: 手机扫码登录 PC 版微信,通过二维码扫描登录,笔记本上的微信就和手机微信同步登录了.这样免去输入繁琐的账号密码,确定方便得很. 对于这 ...

  7. asp 退出登录修改cookie能进入后台_深入浅出让你理解跨域与SSO单点登录原理与技术...

    一:SSO体系结构 SSO SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用 ...

  8. Shiro(三) Shiro核心原理分析

    一.Shiro登陆认证原理 对于登陆请求(URL=/login.html),我们一般使用"anno"拦截器去过滤处理,而这个filter又是放行所有资源的(不作任何处理),所以登陆 ...

  9. cas单点登录原理与实现(整合springsecurity)

    一.cas原理分析 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.CAS是一种基于http协议的B/S应用系统单点 ...

最新文章

  1. 【Qt】Qt再学习(十一):图形视图框架(Graphics View Framework)的一个小demo
  2. 抗击新冠肺炎,如何进行实时动态时序图谱建模与分析?
  3. 如何安装系统认证签名过的APK
  4. Android React Native 笔记(二):Component生命周期
  5. 数组的合并和升序排列_JavaScript - 数组排序 6 种常见算法是什么?
  6. java redis使用卡死_jedispool连redis高并发卡死的问题
  7. CF-477C(Dreamoon and Strings) DP
  8. 【线程】线程基本函数
  9. Android与服务器通信之socket通信
  10. Win11和Win10有什么区别 Win11和Win10区别对比
  11. php mid转id,dedecms 会员网站UID注册名转MID
  12. 《C++标准库》笔记--STL 2
  13. python 进程 线程 协程
  14. 第一次失效_直击震撼场面!宁乡新沩丰坝建成以来第一次高水位应急演练!
  15. 如何使用JSTL及JSTL标签库
  16. 网络架构设计:CNN based和Transformer based
  17. DoTween详细使用教程
  18. 矩阵的转置例题MATLAB,MATLAB特殊矩阵以及矩阵转置
  19. 压力测试工具Apache Bench:2:基于Alpine的Apache Bench镜像
  20. w ndows10启动黑屏,win10开机一直黑屏的解决方法

热门文章

  1. Power Bi Desktop 中如何做出像 Excel 一样的透视表,PowerBi的分组依据用法
  2. Keepass 教程之二——完美的通用自动输入规则
  3. 试用cocos2dx 3.1.1
  4. 【小工具】自定义键盘快捷键切换音频播放设备、快速开关切换静音
  5. 使用 Paessler PRTG 进行应用程序性能监控 (APM)
  6. 一文带你快速入门zabbix6.0的日常操作
  7. Specify @BootstrapWith's 'value' attribute or make the default bootstrapper class available.
  8. 引言,绪论 摘要,有什么区别呢?
  9. 计算机组成原理课程设计总结,计算机组成原理课程设计的实验报告
  10. 机器学习与自然语言处理