客户端与服务器交互中的Token

Token:在计算机身份认证中是令牌(临时)的意思,类似于 MD5 加密之后的长字符串

特点:1.随机性,不可预测  2.具有有限期 3.唯一

作用:1.防止重复提交  2.防止CSRF(跨站请求伪造)攻击

Token是服务器生成的一串字符串,以作客户端进行请求的一个令牌。

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

目的就是为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库。

它的应用:

  1.当用户首次登录成功之后,服务器就会生成一个token值(UUID);

  2.服务器会保存这个值(保存在数据库中或者缓存中),再将这个token值返回给客户端;

  3.客户端拿到token值之后,使用sp进行保存。

  4.以后客户端再次发送网络请求(一般不是登录请求)的时候,就会将这个token值附带到参数中发送给服务器;

     5.服务器接收到客户端的请求之后,会取出token值与保存在本地(数据库)中的token值做比较。如果两个token值相同,说明用户登录成功过,当前用户处于登录状态,如果没有这个token值,没有登录成功。

代码仅供参考:

        生成Token

   $key = "APP_TOKEN_" . 122;

        $val = md5("TOKEN_" . 122 . "_" . time()); // 32 JHJKbjkBJKGHGHGHSSS

        $exptime = 86400*30;

        $this->redis->setex($key, $exptime, $val);//有效期 30天

        验证Token

  $key = "APP_TOKEN_" .122;

  if ( !$this->redis->exists($key) ) {

    return false;

  }

       $user_token = $this->redis->get($key);

       if ( empty($user_token) ) {

    return false;

  }

  if ($token != $user_token) {

    return false;

  }

猜你喜欢

转载自www.cnblogs.com/superzwb/p/10561115.html
今日推荐