php自定义token及验证

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

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容