对于初学者来说,对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的一点总结,如有叙述不当之处请指正,我将及时改正并感谢,我知道还有更多更好的使用方式,我在这里只是抛砖引玉,希望大家将您的使用方式提出来,我们一起讨论,学习,一起进步,同时也为像我一样对这方面理解薄弱的朋友提供点帮助,谢谢。
- 大小: 21.6 KB
分享到:
相关推荐
1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样
这个功能的实现涵盖了服务端、数据库以及Android客户端三个主要部分。下面将详细阐述这些部分的关键知识点。 1. **Android客户端**: - **网络请求库**:在Android客户端中,通常会使用像`HttpURLConnection`、`...
1. **Android客户端上传** - **文件选择**:在Android应用中,通常使用Intent或第三方库如Android-File Chooser来让用户选择本地图片或文件。 - **文件读取**:使用`FileInputStream`读取选中的文件内容,准备上传...
此外,服务端可能需要验证客户端的身份,例如使用Token或Session机制。 8. **性能优化**: 对于大文件上传,可以采用分块上传,将大文件拆分为小块并逐个发送,这样可以提高上传的成功率和用户体验。 9. **状态...
6. **服务端验证Token**:服务端收到客户端请求后,验证Token的有效性,如果验证通过,则返回请求的数据。 基于Token的认证机制具有以下优点: - **支持跨域访问**:Token通常置于HTTP请求头中,不受同源策略限制...
本篇文档将结合移动端、服务端和网络协议方面的知识,对前端面试中常见的一些问题进行探讨,特别是对cookie和token的区别进行详细的分析。 首先,要明白为什么现代前端工程师需要具备这些能力。由于互联网行业的...
- **状态管理**:对于登录状态的管理,可能需要使用Session或Token机制,确保用户会话的安全。 总之,这个Android登录/注册系统结合了Node.js和Express.js的强大后端功能,以及Android和Volley的高效前端网络通信...
在MediaSessionDemo的代码中,你可能会看到如何创建和初始化MediaSession,如何设置回调以响应控制事件,如何处理AudioFocus,以及如何在客户端和服务端之间进行通信。通过深入研究这个示例,开发者可以更好地理解和...
在本项目中,Vue被用于构建用户界面,接收来自Android客户端的扫码数据,并展示登录状态和相关信息。 **Android** Android是Google主导的开源移动操作系统,主要用于智能手机和平板电脑。在二维码扫码登录系统中,...
6. **API设计**:遵循RESTful原则,设计清晰、易用的API接口,供Android客户端调用。 7. **测试与调试**:后端代码可能包含了单元测试和集成测试,确保服务的稳定性和正确性。 通过这个项目,开发者可以学习到完整...
- 服务器需要维护会话状态,可能采用Session或Token机制,以识别和管理不同的客户端。 6. **数据持久化**: - 为了保存聊天记录,可能使用SQLite数据库存储历史消息,方便离线查看。 - 数据库操作通常通过...
- **客户端与服务端通信**:学习如何使用Token和Session实现客户端和服务端的双向认证。 - **推送原理**:理解推送消息的发送机制,包括服务器端和客户端的实现方式。 2. **Java面试题**: - **深拷贝与浅拷贝**...
Jasonette是一款基于JSON的原生移动应用框架,允许开发者用JSON来构建iOS和Android应用,极大地简化了跨平台开发。而Rails是Ruby on Rails的简称,是一个流行的开源Web应用程序框架,遵循MVC(模型-视图-控制器)...
##### 3.1 服务端Token方式 - 类似Session 针对APP的安全机制设计,许多应用采用了基于Token的身份验证方案。具体流程如下: 1. 用户通过密码登录后,服务器向客户端返回Token。 2. 客户端在发起后续请求时携带此...
Kotlin是一种现代的、静态类型的编程语言,被广泛应用于Android开发和服务器端编程,它具有简洁、安全和高效的特性,适合构建WebRTC服务端应用。 WebRTC服务端的实现通常涉及以下关键步骤: 1. **用户认证**:...
- `MediaSession.Token`:客户端和服务端之间的通信令牌,用于建立连接。 2. **MediaBrowserService的工作流程** - 客户端创建MediaBrowser实例,通过调用`connect()`方法连接到服务。 - 服务端在`onCreate()`...
这通常通过服务器端的会话(session)或者基于令牌(token)的身份验证机制来实现。如果用户尚未登录,那么应提供适当的引导,比如跳转到介绍页,让用户了解应用的功能和价值,然后再提供登录或注册的入口。这样的...
如果验证通过,服务器会生成一个身份标识,如JWT(JSON Web Token)或自定义的sessionID,并返回给客户端。 4. **保存用户状态**:uni-app接收到服务器返回的身份标识后,将其保存在本地存储(如uni.setStorageSync...