php 简单token认证,php版Token授权简单示例 - YangJunwei

前边分享了 又拍云php版Token授权防盗链整理 感觉可以用一用,今天分享一个示例,利用Token授权来实现加解密。

/** 生成签名授权

*

* @param $str,签名对象

* @param $key,密钥

* @param $expiry,有效期,单位秒

**/

function yang_encode($str, $key='', $expiry=''){

// 过期时间: 当前Unix秒数+有效期

$ctime = time() + $expiry;

// 生成签名授权码: 将三个参数以&符号拼接,进行md5加密并取加密值的末8位,再与$ctime拼接

$sign_str = substr(md5($str.'&'.$key.'&'.$ctime), -8).$ctime;

return $sign_str;

}

// 示例

//echo yang_encode('aabbcc', 'UsG5kw67RB', '3600');

/** 解密签名授权

*

* @param $sign_str,签名授权码

* @param $str,签名对象

* @param $key,密钥

* @param $expiry,有效期,单位秒

**/

function yang_decode($sign_str, $str, $key='', $expiry=''){

// 验证授权码完整性(18个字符)

if( strlen($sign_str) != 18){

return "签名授权码不完整,验证失败! ";

exit;

}

// 拆分字符串 $sign_str

$str1 = substr($sign_str, 0, 8); // 签名授权

$str2 = substr($sign_str, 8, 10); // 过期时间

// 构造签名验证字符串

$sign = substr(md5($str.'&'.$key.'&'.$str2), -8);

$de = ( ($str2-time())>0 && ($str2-time())

return $de;

}

// 示例

//echo yang_decode('ae6648711483724340', 'aabbcc', 'UsG5kw67RB', '3600');

这个签名授权函数,可以用在 URL 传参中,比如授权获取用户资料:

http://aaa.com/get.php?uid=1&sign=ae6648711483724340

这样可以利用参数 sign 判断请求是否已授权且在有效期内,如果条件都满足,再输出数据,防止恶意提交!

比如QQ客户端上点击邮箱小图标,跳转到浏览器后自动登录邮箱,就用到了 clientkey 参数:

http://ptlogin2.qq.com/jump?ptlang=2052&clientuin=QQ号码&clientkey=112位授权码&u1=跳转网址

最近有个PC客户端与WEB端同步登录的项目就用到了这个方案,有时间将这个 url 通过 get 传参添加token授权的用法拓展一下。

如果各位有其他更优的方案,欢迎交流!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值