zoukankan      html  css  js  c++  java
  • token

    1、token介绍

    token是服务端生成的一串字符串,作为客户端进行请求的一个认证标识。

    当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。

    简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。

    2、认证(用于请求认证时)----------在postman使用里面有说过认证的东西。

    由于HTTP是一种没有状态的协议,它不知道是谁访问了应用。比如使用用户名、密码登录了,但下次再发送请求时就还需重复操作。

    解决方法:

    当用户请求登录的时候,如果没有问题,在服务端生成一条记录,在这个记录里注明信息,然后把这条记录的id发送给客户端,

    客户端收到以后把这个id存储在cookie里,下次该用户再次向服务端发送请求的时候,可以带上这个cookie,这样服务端会验证一下cookie里的信息,看能不能在服务端这里找到对应的记录,如果可以,说明用户已经通过了身份验证,就把用户请求的数据返回给客户端。

    说到底:就是利用session(sessionid)。在服务端存储为用户生成的session,这些session会存储在内存,磁盘,或者数据库,从而使用session机制

    3、使用token  进行请求认证

    流程:

    1. 客户端使用用户名、密码请求登录。
    2. 服务端收到请求,验证用户名和密码。
    3. 验证成功后,服务端会生成一个token,并发送给客户端。
    4. 客户端收到token后存储起来,放在cookie或者Local Storage(本地存储)里。
    5. 客户端每次向服务端发送请求的时候都需要带上服务端发给的token。
    6. 服务端收到请求,然后去验证客户端请求里面的token,验证成功,就向客户端返回请求的数据。

    其他方式--请求认证:------------------

    1、电脑的mac地址作为token(cmd:ipconfig 可实现查看本机mac物理地址)

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

    服务端:服务端接收到该参数后,便用一个变量来接收,同时将其作为token保存在数据库,并将该token设置到session中。

    客户端每次请求的时候都要统一拦截,将客户端传递的token和服务器端session中的token进行对比,相同则登录成功,不同则拒绝。

    此方式客户端和服务端统一了唯一的标识,并且保证每一个设备拥有唯一的标识。

    缺点:服务器端需要保存mac地址;

    优点:客户端无需重新登录,只要登录一次以后可一直可以使用,超时的问题由服务端进行处理。

    2、用sessionid作为token

    客户端:客户端携带用户名和密码登录

    服务端:接收到用户名和密码后进行校验,正确就将本地获取的sessionid作为token返回给客户端,客户端以后只需带上请求的数据即可。

    此方式的优点是方便,不用存储数据,

    缺点就是当session过期时,客户端必须重新登录才能请求数据。

    4、移动端APP利用token机制进行认证操作

    用户在登录APP时,APP端会发送加密的用户名和密码到服务器,服务器验证用户名和密码,如果验证成功,就会生成相应位数的字符产作为token存储到服务器中,并且将该token返回给APP端。

    以后APP再次请求时,凡是需要验证的地方都要带上该token,然后服务器端验证token,成功返回所需要的结果,失败返回错误信息,让用户重新登录。

    其中,服务器上会给token设置一个有效期,每次APP请求的时候都验证token和有效期。

    5、token的存储

    token可以存到数据库中,但是有可能查询token的时间会过长导致token丢失(当token失效或丢失,再重新认证就行)。

    比如避免查询时间过长,可以将token放到内存中。查询速度和占用的内存都很好。

    6、token的加密-----------------

    加密的方式一般有:

    1. 在存储的时候把token进行对称加密存储,用到的时候再解密。
    2. 签名sign:将请求URL、时间戳、token三者合并,并md5进行加密处理。(及其他加密措施)
  • 相关阅读:
    韩式英语
    Daily dictation 听课笔记
    words with same pronunciation
    you will need to restart eclipse for the changes to take effect. would you like to restart now?
    glottal stop(britain fountain mountain)
    education 的发音
    第一次用Matlab 的lamada语句
    SVN的switch命令
    String的split
    SVN模型仓库中的资源从一个地方移动到另一个地方的办法(很久才解决)
  • 原文地址:https://www.cnblogs.com/QiKa/p/13252027.html
Copyright © 2011-2022 走看看