美文网首页
php自定义token及验证

php自定义token及验证

作者: zhaoxiaohui520 | 来源:发表于2019-09-28 08:57 被阅读0次

    生成token

    //用户名、此时的时间戳,并将过期时间拼接在一起

    $admin = $data['username']; //获取前台传来的用户账号

    $time = time();

    $end_time = time()+86400;

    $info = $admin. '.' .$time.'.'.$end_time;//设置token过期时间为一天

    //根据以上信息信息生成签名(密钥为 siasqr)

    $signature = hash_hmac('md5',$info,'siasqr');

    //最后将这两部分拼接起来,得到最终的Token字符串

    $token = $info . '.' . $signature;


    验证token

    public function check_token($token)

    {

    /**** api传来的token ****/

    if(!isset($token) || empty($token))

    {

    $msg['code']='400';

                $msg['msg']='非法请求';

                return json_encode($msg,JSON_UNESCAPED_UNICODE);

    }

    //对比token

    $explode = explode('.',$token);//以.分割token为数组

    if(!empty($explode[0]) && !empty($explode[1]) && !empty($explode[2]) && !empty($explode[3]) )

    {

    $info = $explode[0].'.'.$explode[1].'.'.$explode[2];//信息部分

            $true_signature = hash_hmac('md5',$info,'siasqr');//正确的签名

    if(time() > $explode[2])

    {

    $msg['code']='401';

                $msg['msg']='Token已过期,请重新登录';

                return json_encode($msg,JSON_UNESCAPED_UNICODE);

    }

    if ($true_signature == $explode[3])

    {

        $msg['code']='200';

                $msg['msg']='Token合法';

                return json_encode($msg,JSON_UNESCAPED_UNICODE);

    }

    else

    {

        $msg['code']='400';

                $msg['msg']='Token不合法';

                return json_encode($msg,JSON_UNESCAPED_UNICODE);

    }

    }

    else

    {

                $msg['code']='400';

                $msg['msg']='Token不合法';

                return json_encode($msg,JSON_UNESCAPED_UNICODE);

    }

    }

    相关文章

      网友评论

          本文标题:php自定义token及验证

          本文链接:https://www.haomeiwen.com/subject/rcbgyctx.html