对于初学者来说,Token和Session的使用必然会被限制在两难的境地。开发过程中,知道有这个东西,但不知道为什么要用?不知道它的原理,今天就带大家分析一下。
首先我们来解释一下他的意思:
1.Token介绍:Token是客户端频繁向服务器请求数据,服务器频繁去数据库查询用户名和密码,进行比较,判断用户名和密码是否正确,并给出相应的提示。在这种背景下,Token应运而生。
2.Token的定义:Token是服务器生成的字符串,作为客户端请求的令牌。第一次登录后,服务器生成一个令牌并将其返回给客户端。以后客户端只需要带这个令牌来请求数据,不用再带用户名和密码了。
3.使用Token的目的:Token的目的是减轻服务器的压力,减少频繁的数据库查询,使服务器更加健壮。
知道了Token的意思,我们就更清楚的知道为什么要用它。
二、Token怎么用?
这是本文的重点,这里我将介绍两种常用的方法。
1.使用设备号/设备***c地址作为令牌(推荐)
客户端:客户端在登录时获取设备的设备号/***c地址,作为参数传输给服务器。
服务器:收到这个参数后,服务器会用一个变量来接收,并作为令牌保存在数据库中,并将令牌设置到会话中。每次客户端请求,都会统一拦截,将客户端传递的令牌与服务器的会话中的令牌进行比较。如果相同,则释放,如果不同,则拒绝。
分析:此时,客户端和服务器统一了一个唯一的标识令牌,并确保每个设备都有一个唯一的会话。这种方式的缺点是客户端需要将设备号/***c地址作为参数发送,服务器需要保存。好处是客户端不需要再次登录,但是登录一次就可以一直使用。至于超时,服务器会处理的。怎么处理?如果服务器的令牌超时,服务器只需要在数据库中查询客户端传递的令牌,并赋给变量Token,这样令牌的超时就重新计时了。
2.使用会话值作为令牌
客户端:客户端只需要用用户名和密码登录。
客户端:客户端收到用户名和密码后,进行判断,如果正确,将本地获取的sessionID作为令牌返回给客户端。客户端只需要在将来带来所请求的数据。
分析:这种方式的优点是方便,不需要存储数据,缺点是当会话到期时,客户端必须重新登录才能访问数据。
三。使用中的问题及解决方法?
刚才我们已经很轻松的介绍了Token的两种使用方式,但是在使用Token的过程中还是会遇到各种各样的问题。在Token的第一种方法中,我们隐藏了一个问题,当网络不好或者并发请求时,会导致多次重复提交数据。
总结:以上是个人对开发中Token和session使用的总结。如有不当描述请指正,我会及时改正,谢谢。我知道有更多更好的方法来使用它们。我只是来提供一些建议。希望大家可以提出自己的使用方法,我们可以一起讨论、学习、进步。同时也可以为像我这样对这方面认识比较薄弱的朋友提供一些帮助。谢谢你。
本文来自浅沫投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/503069.html