php自定义token及验证

2019-09-28  本文已影响0人  zhaoxiaohui520

生成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);

}

}

上一篇下一篇

猜你喜欢

热点阅读