Api 接口 token 生成规则 (复制可用)

IT-Pony 2017-09-27 AM 1153℃ 0条

备注

本规则适用接口数据传输,签名验证,等

加密方法

    
    // 传入用户ID和token过期时间
    function encodeToken($userCode = 0, $time = 0)
    {
        // 计算长度
        $strlen = strlen($userCode.$time);
        // 需要加密的子串
        $string = $userCode.$time;
        // 置空用户存储转换后的子串
        $encodeString = '';
        // 进行转化 自己看咯
        for ($i=0;$i< $strlen;$i++) $encodeString = $encodeString.chr($string{$i});
       
        return base64_encode(md5($userCode).base64_encode($encodeString));
    }

解密方法

    
    // $data 接收到的token
    function decodeToken($data)
    {
        $uniqueToken = base64_decode($data);
        // 截取签名长度
        $sign = substr($uniqueToken,0,32);
        // 反解数据
        $data = base64_decode(substr($uniqueToken,32));

        $string = '';
        // 解密子串
        for ($i=0;$i< strlen($data);$i++) $string = $string.ord($data{$i});
        // 验证token是否被改过
        $tokenData = substr($string, 0, (strlen($string)-10));

        if($sign !== md5($tokenData)) return [
            'result' => false,
            'errCode' => 'token验证失败'
        ];
        // 获取过去时间
        $expire = substr($string, (strlen($string) -10));

        if(time() >= $expire)  return [
            'result' => false,
            'errCode' => 'token失效请重新获取'
        ];
        
        

        // 获取用户信息注入全局变量,方便后续使用
        if(!$userData)  return [
            'result' => false,
            'errCode' => '非法token,无法完成数据操作'
        ];

        // 返回用户数据
        $response = [
            'result' => true,
            'data' => $tokenData,
        ];
标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~