为什么引入token?
在做项目的时候遇到了自动登录问题,如果自动登录的话之前设想是第一次登录时保存用户名和密码到本地,启动APP的时候自动调用登录接口,可是这样一来用户数据就很危险,很容易被盗取,所以网上查找了下解决方法,一般现在web都是使用cookie在APP中我们一般叫做token,就是在用户第一次登录的时候向服务器发送请求,服务器验证后返回一个特定字符串作为token,APP保存好这个token,以后需要自动登录的时候验证一下token就行了,或者进行其他数据请求,都可以使用这个token来验证,而且这个token是有时效的,过期了就得重新登录获取。
token的作用
- token可以显著减少服务端对用户表的查询
- 同时使用户不必每次都登陆,提高了系统的可用性与健壮性
- 用户名和密码不需要存本地,请求其他数据的时候可以使用token,提高了安全性
token使用
1、用设备号/设备mac地址作为Token(推荐)
客户端:客户端在登录的时候获取设备的设备号/mac地址,并将其作为参数传递到服务端。
服务端:服务端接收到该参数后,进行适当的修改,如加上时间戳或者其他信息,形成一个加密串,同时将其作为Token保存在数据库,并将该Token设置到session中,再返回给客户端,客户端进行存储,客户端每次请求的时候服务端都要统一拦截,并将客户端传递的token和服务器端session中的token进行对比,如果相同则放行