關於使用jwt編寫接口時候對token判斷時候錯誤的機制處理


前言:php在使用接口時候很多時候都是需要帶token的,如果不對token進行校驗那么別人就能夠隨意編寫一個token進入你的接口拿數據,應該怎樣處理呢?

 

//生成token
    public function testT(){
        //$key = "example_key2343534@#%$#^$&%^kprgokgdr";
        $privateKey = file_get_contents('../config/openssl/privateKey.txt');
        $exp = time() +  7200;
        $token = array(
        "iss" => "",
        "aud" => "",
        "iat" => time(),//簽發時間
        //"nbf" => time()+10,//生效時間
        'exp' => $exp,//過期時間
        );
        // $jwt = JWT::encode($token, $key);
        $jwt = JWT::encode($token, $privateKey, 'RS256');
        halt($jwt);
        return json(['token'=>$jwt,'exp'=>date('Y-m-d H-i-s',$exp)]);
    }
//驗證token
    public function rosetoke(){
        //halt($token);
        // dump($token);
        // dump($key);
        // halt(null);
        // $token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIiLCJhdWQiOiIiLCJpYXQiOjE1NDgyMDk5OTYsIm5iZiI6MTU0ODIxMDAwNiwiZXhwIjoxNTQ4MjE3MTk2fQ.k9yYHqgFj6VNXJOtAQD5BTxh7CW_o0qvfV3C3GRkNFw";
        $publicKey  = file_get_contents('../config/openssl/publicKey.txt');
        $jwt = "nSU2y_yDVSxSVt31urSJbPocu99xRYghROhrrr5TrIYFKBegjKfzu5qYHm8dSZXkqYRv-qupY4uRwjR6G";
        try{
            $decoded = JWT::decode($jwt, $publicKey, array('RS256'));
        }catch(\Exception $e){
            return false;
        }
        var_dump($decoded);
        halt($decoded);

 

 

由於多次嘗試解密用假的數據但是內部機制並沒有返回一個false而是返回了報錯的行數,這樣顯然是不符合我的要求,因此靈機一動用異常拋出改變內部機制,返回false值這樣就可以實現給到前台數據是false,問題解決


免責聲明!

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



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