Token:令牌
用来判断用户身份的一个标识;
用户在登录的时候登录,成功的情况下生成一个token(可以是将用户信息加密,也可以是别的方式),将token返还给客户端,同时将token和用户id和时间戳存入,token表。
用户可以根据token向接口发送请求,接口在接受请求的时候,生成时间戳,验证该token在token表中是否过期,若过期则让用户重新登录,删除该token,并见新的token和新的时间戳和用户id再次存入token表。
若用户没有登录直接向接口发送请求,则没有token,接口在接受到请求的时候判断是否有token,若没有则提示用户没有登录,跳转至登录页面,让用户登录。
Sign:签名
服务端在接受到用户请求的时候判断该请求是否是来自于自己允许的平台(自己允许的平台有统一的加密规则)
客户端在向接口发送请求的时候带上参数
(参数可以是用户信息和时间戳,时间戳在第一次使用的时候就应赋值给一个变量,以后每次使用时间戳就使用该变量,因为如果每次直接调用时间戳time(),则每次得到的时间戳都不一样)。
和sign(sign内容为请求时带上的参数和token进行统一加密后的字符串),接口在接受到参数和sign后,先比较接受到的时间戳和当前时间戳,若相差超过规定时间则请求超时,让用户重新发送请求。
若对比时间戳后没有超时,则用自己统一的加密规则将接受到的参数加密(可以是用户信息和接收到的时间戳)和库中查询的到token进行处理,,处理完成后的字符串和接收到的sign进行对比,若不一样,拒绝该请求,若一样则说明正常请求,响应请求返还用户所需要的数据
推荐库
简介:
“ jsrsasign”(RSA-Sign JavaScript库)是一个开源免费的纯JavaScript密码库,支持RSA / RSAPSS / ECDSA / DSA签名/验证,ASN.1,PKCS#1/5/8私钥/公钥,X.509证书,CRL,CMS SignedData,时间戳和CAdES以及JSON Web签名(JWS)/令牌(JWT)/密钥(JWK)。