客戶端與服務器交互中的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;

  }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM