对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西。

一、我们先解释一下他的含义:

1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

了解了Token的意义后,我们就更明确的知道为什么要用他了。

二、如何使用Token?

这是本文的重点,在这里我就介绍常用的两种方式。

1、用设备号/设备mac地址作为Token(推荐)

客户端:客户端在登录的时候获取设备的设备号/mac地址,并将其作为参数传递到服务端。

服务端:服务端接收到该参数后,便用一个变量来接收同时将其作为Token保存在数据库,并将该Token设置到session中,客户端每次请求的时候都要统一拦截,并将客户端传递的token和服务器端session中的token进行对比,如果相同则放行,不同则拒绝。

分析:此刻客户端和服务器端就统一了一个唯一的标识Token,而且保证了每一个设备拥有了一个唯一的会话。该方法的缺点是客户端需要带设备号/mac地址作为参数传递,而且服务器端还需要保存;优点是客户端不需重新登录,只要登录一次以后一直可以使用,至于超时的问题是有服务器这边来处理,如何处理?若服务器的Token超时后,服务器只需将客户端传递的Token向数据库中查询,同时并赋值给变量Token,如此,Token的超时又重新计时。

2、用session值作为Token

客户端:客户端只需携带用户名和密码登陆即可。

客户端:客户端接收到用户名和密码后并判断,如果正确了就将本地获取sessionID作为Token返回给客户端,客户端以后只需带上请求数据即可。

分析:这种方式使用的好处是方便,不用存储数据,但是缺点就是当session过期后,客户端必须重新登录才能进行访问数据。

三、使用过程中出现的问题以及解决方案?

刚才我们轻松介绍了Token的两种使用方式,但是在使用过程中我们还出现各种问题,Token第一种方法中我们隐藏了一个在网络不好或者并发请求时会导致多次重复提交数据的问题。

该问题的解决方案:将session和Token套用,如此便可解决,如何套用呢?请看这段解释:

这就是解决重复提交的方案。

总结:以上是个人对开发中使用Token和session的一点总结,如有叙述不当之处请指正,我将及时改正并感谢,我知道还有更多更好的使用方式,我在这里只是抛砖引玉,希望大家将您的使用方式提出来,我们一起讨论,学习,一起进步,同时也为像我一样对这方面理解薄弱的朋友提供点帮助,谢谢。

原文出处:http://wyong.blog.51cto.com/1115465/1553352

转载于:https://www.cnblogs.com/blkspm/p/5261108.html

Android token使用相关推荐

  1. android token机制_对Android 中的 ANR 进行详解

    前言 关于ANR,以前只知道Activity.BroadCastReceiver.Service三种组件的ANR时限.一般采用哪些方式避免ANR.以及通过data/anr/traces.txt去分析A ...

  2. android token机制_你真的了解16.6ms刷新机制吗?

    阅读本文前,请您先点击上面的蓝色字体"Android扫地僧","关注"后再点击置顶公众号,优质干货,重磅资源第一时间送达. 散人丶 https://juejin ...

  3. android token机制_Android之window机制token验证

    前言 很高兴遇见你~ 欢迎阅读我的文章 这篇文章讲解关于window token的问题,同时也是Context机制和Window机制这两篇文章的一个补充.如果你对Android的Window机制和Co ...

  4. android token过期怎么跳转登录_用sa-token轻松解决网站权限验证

    sa-token是什么? 一个的JavaWeb权限认证框架,强大.简单.好用 与其它权限认证框架相比,sa-token尽力保证两点: - 上手简单:能自动化的配置全部自动化,不让你费脑子 - 功能强大 ...

  5. (unity)新手接入Facebook登录,分享以及google登录,Android,IOS,OC接入篇

    最近接Android,IOS的Facebook登录,分享 以及Google登录,分享流程以及遇到的问题整理. 一. Android接入 google登录 第一步,前往 [ firebase] http ...

  6. app-》h5同步身份

    2019独角兽企业重金招聘Python工程师标准>>> 最近半年主要是进行手机端的开发,主要是H5平台和APP内嵌H5营销活动的支持,相对遇到的兼容性问题比较少些,只是iscroll ...

  7. 全家Fa米家app抓包——做自动签到领Fa米粒

    目录 简介 代码 效果 app下载 福利 简介 通过小黄鸟抓包Fa米家App,发现没有什么校验,用模拟请求直接可以重发... 注意: 1.首先需要在小黄鸟里安装SSL证书,不然抓不到SSL的包. 2. ...

  8. 1222222222

    在这里插入代码片 ```# -*- coding: utf-8 -*- import ttkbootstrap as ttk from ttkbootstrap.constants import * ...

  9. 快手短视频去水印API接口源码

    支持输出:视频播放量,分享数,收藏量,无水印视频链接. 使用方法:你的域名/kuaishou.php?url=视频链接 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 ...

最新文章

  1. python内置库之学习ctypes库(一)
  2. 如何从失焦的图像中恢复景深并将图像变清晰?
  3. 3-3 编程练习:jQuery键盘事件案例
  4. ARMedia问题记录
  5. sql自动生成编码函数
  6. android创建项目,并开发项目。
  7. python shelve模块_python shelve模块
  8. 20190226杂七杂八
  9. MySQL数据类型有哪些?
  10. 百度3D地球,高清地图!地形混合!
  11. 图片上传之blob对象预览
  12. 计算机文化基础项目化教程答案,第七版计算机文化基础实践教程 第3-4章习题答案及解析...
  13. 第一个虚拟仿真项目,冲冲冲
  14. alexa排名的作用
  15. Idea 激活(MAC/WIN)使用教程
  16. Collection 和Collections
  17. Js之正则表达式请使用字母、数字和特殊符号组合,8-20个字符
  18. 2021大学生开学必备物品清单
  19. 计算机辅助设计阀体,计算机辅助设计03565.doc
  20. java tea属于红茶吗_乌龙茶属于红茶吗?

热门文章

  1. java的字符串池_翻译-Java字符串池
  2. OpenCV-Python实战(番外篇)——利用 K-Means 聚类进行色彩量化
  3. 使用Julia进行图像处理--使用形态学运算进行图像调整
  4. jsf tree组件_JSF表单组件示例教程
  5. python 捕获多个异常_Python捕获多个异常
  6. Java面试题:synchronized和对象的访问定位的两种方式
  7. [总]Android高级进阶之路
  8. 01.mac下安装配置maven
  9. 深入理解JAVA中的NIO
  10. matplotlib常用绘图方法【转】