各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案各类知识收集,PHP技术分享与解决方案

Str Tom,为分享PHP技术和解决方案,贡献一份自己的力量!
QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > PHP

php自定义token类并将生成的token放在http请求头的Authorization中的代码

管理员 2023-09-05
PHP
136

php自定义token类并将生成的token放在http请求头的Authorization中的代码

内容导读

收集整理的这篇技术教程文章主要介绍了php自定义token类并将生成的token放在http请求头的Authorization中的代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3304字,纯文字阅读大概需要5分钟

内容图文

本篇文章给大家带来的内容是关于php自定义token类并将生成的token放在http请求头的Authorization中的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

今天在使用laravel写东西的时候,需要与前端交互,看了jwt(json web token),于是自己想试着写一个简单的token类,token中存储了成员id和成员的权限,与前端交互时,将生成的token放在http请求头的Authorization中,整理如下:

<?phpnamespace AppHttpControllersAuth;use IlluminateHttpRequest;use AppHttpControllersController;class TokenController extends Controller{    /**     * header     * @var array     */    private static $header = [            "type" => "token",            "alg"  => "HS256"    ];    /**     * create payload     * @param $memberId     * @param $permission     * @return array     */    private static function payload($memberId, $permission)    {        return [                    "iss"       => "http://api.creatshare.com",                    "iat"       => $_SERVER['REQUEST_TIME'],                    "exp"       => $_SERVER['REQUEST_TIME'] + 7200,                     "GivenName" => "CreatShare",                     "memberId"  => $memberId,                     "permission"=> $permission        ];    }    /**     * encode data     * @param $data     * @return string     */    private static function encode($data)    {        return base64_encode(json_encode($data));    }    /**     * generate a signature     * @param $header     * @param $payload     * @param string $secret     * @return string     */    private static function signature($header, $payload, $secret = 'secret')    {        return hash_hmac('sha256', $header.$payload, $secret);    }    /**     * generate a token     * @param $memberId     * @param $permission     * @return string     */    public static function createToken($memberId, $permission)    {        $header = self::encode(self::$header);                $payload = self::encode(self::payload($memberId, $permission));                $signature = self::signature($header, $payload);                return $header . '.' .$payload . '.' . $signature;    }    /**     * check a token     * @param $jwt     * @param string $key     * @return array|string     */    public static function checkToken($jwt, $key = 'secret')    {        $token = explode('.', $jwt);                if (count($token) != 3)                    return 'token invalid';                 list($header64, $payload64, $sign) = $token;                 if (self::signature($header64 , $payload64) !== $sign)                     return 'token invalid';                 $header = json_decode(base64_decode($header64), JSON_OBJECT_AS_ARRAY);                 $payload = json_decode(base64_decode($payload64), JSON_OBJECT_AS_ARRAY);                 if ($header['type'] != 'token' || $header['alg'] != 'HS256')                     return 'token invalid';                 if ($payload['iss'] != 'http://api.creatshare.com' || $payload['GivenName'] != 'CreatShare')                     return 'token invalid';                 if (isset($payload['exp']) && $payload['exp'] < time())                     return 'timeout';                 return [                     'memberId' => $payload['memberId'],                     'permission' =>$payload['permission']        ];    }    /**     * get a token     * @return null     */    public static function getToken()    {        $token = null;                if (isset($_SERVER['HTTP_AUTHORIZATION']))                    $token = $_SERVER['HTTP_AUTHORIZATION'];                return $token;    }}
$token = Token::createToken($member_id, $member_permission); //创建一个token$token = Token::getToken();    //从http请求头获取token$result = Token::checkToken(); //解析token

相关推荐:

php xml操作类(自定义)

PHP实现可自定义样式的分页类,php自定义样式分页

php中自定义类文件自动加载

以上就是php自定义token类并将生成的token放在http请求头的Authorization中的代码的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的php自定义token类并将生成的token放在http请求头的Authorization中的代码全部内容,希望文章能够帮你解决php自定义token类并将生成的token放在http请求头的Authorization中的代码所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 lecms, classcms, fastadmin, pbootcms, phpcms, eyoucms, yzmcms, PHP, xunruicms, jizhicms, dedecms, wordpress, hkcms, yzncms, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

扫码关注

qrcode

QQ交谈

回顶部