PHP curl 请求中添加 Authorization token

PHP curl 请求中添加 Authorization token,第1张

PHP curl 请求中添加 Authorization token

经过测试用一下方式设置 header 参数,可以成功获取数据

curl 参数设置如下:

curl请求方法

每登录一次返回给接口一个token,这个token会存储在单独的表里,每次APP关系到用户的 *** 作都必须要携带token,根据token来解码出是哪个用户。这种方法也可以做其他设备登录踢出。一般都是这么个做法。token的生成类似cookie的密码加密,我是这么做的,当然有很多种方法,只要你能加密能解密就行。下面是phpcms里面的一个经典的方法,我一般拿来做cookie加密,制作token来使用。

<?php

/**

* 字符串加密、解密函数

*

* @param    string    $txt        字符串

* @param    string    $operation    ENCODE为加密,DECODE为解密,可选参数,默认为ENCODE,

* @param    string    $key        密钥:数字、字母、下划线

* @param    string    $expiry        过期时间

* @return    string

*/

function sys_auth($string, $operation = 'ENCODE', $key = '', $expiry = 0) {

    $ckey_length = 4

    $key = md5($key != '' ? $key : C('COOKIE_AUTH_KEY'))

    $keya = md5(substr($key, 0, 16))

    $keyb = md5(substr($key, 16, 16))

    $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : ''

    $cryptkey = $keya.md5($keya.$keyc)

    $key_length = strlen($cryptkey)

    $string = $operation == 'DECODE' ? base64_decode(strtr(substr($string, $ckey_length), '-_', '+/')) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string

    $string_length = strlen($string)

    $result = ''

    $box = range(0, 255)

    $rndkey = array()

    for($i = 0 $i <= 255 $i++) {

        $rndkey[$i] = ord($cryptkey[$i % $key_length])

    }

    for($j = $i = 0 $i < 256 $i++) {

        $j = ($j + $box[$i] + $rndkey[$i]) % 256

        $tmp = $box[$i]

        $box[$i] = $box[$j]

        $box[$j] = $tmp

    }

    for($a = $j = $i = 0 $i < $string_length $i++) {

        $a = ($a + 1) % 256

        $j = ($j + $box[$a]) % 256

        $tmp = $box[$a]

        $box[$a] = $box[$j]

        $box[$j] = $tmp

        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]))

    }

    if($operation == 'DECODE') {

        if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {

            return substr($result, 26)

        }else{

            return ''

        }

    }else{

        return $keyc.rtrim(strtr(base64_encode($result), '+/', '-_'), '=')

    }

}

?>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11378114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存