专业游戏门户,分享手游网游单机游戏百科知识攻略!

嗨游网
嗨游网

JWT是什么?对JWT的简单认识

来源:小嗨整编  作者:小嗨  发布时间:2024-03-15 07:56
摘要:本篇文章给大家带来的内容是关于jwt是什么?对jwt的简单认识,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。一直没有好好看过jwt,直到前两天要做web验证,朋友给我推荐了jwt。才发现jwt已经被大家广泛的应用了。看来我...

本篇文章给大家带来的内容是关于jwt是什么?对jwt的简单认识,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

JWT是什么?对JWT的简单认识

一直没有好好看过jwt,直到前两天要做web验证,朋友给我推荐了jwt。才发现jwt已经被大家广泛的应用了。看来我有点out了。哈哈,趁着这个世界来好好看看这个。

JWT(JSON Web Token), 顾名思义就是可以在Web上传输的token,这种token是用JSON格式进行format的。它是一个开源标准(RFC 7519),定义了一个紧凑的自包含的方式在不同实体之间安全的用JSON格式传输信息。

由于现在很多项目都是前后端分离,restful api模式。所以传统的session模式就没有办法满足认证需求,这个时候jwt的作用就来了。可以说 restful api认证是jwt的一个很好的应用场景。

下面是一个很小的demo

'dadsa-12312-vsd1s1-fsds',    'account'=>'daisc',    'password'=>'123456'];$redis = redis();$action  =  $_GET['action'];switch ($action){    case 'login':        login();        break;    case 'info':        info();        break;}//登陆,写入验证tokenfunction login(){    global  $user;    $account = $_GET['account'];    $pwd = $_GET['password'];    $res = [];    if($account==$user['account']&&$pwd==$user['password'])    {        unset($user['password']);        $time = time();        $token = [            'iss'=>'http://test.cc',//签发者            'iat'=>$time,            'exp'=>$time+60,            'data'=>$user        ];        $jwt = \Firebase\JWT\JWT::encode($token,KEY);        $res['code'] = 200;        $res['message'] = '登录成功';        $res['jwt'] = $jwt;    }    else    {        $res['message']= '用户名或密码错误';        $res['code'] = 401;    }    exit(json_encode($res));}function info(){   $jwt = $_SERVER['HTTP_AUTHORIZATION'] ?? false;   $res['code'] = 200;   if($jwt)   {        $jwt = str_replace('Bearer ','',$jwt);        if(empty($jwt))        {            $res['code'] = 401;            $res['msg'] = 'You do not have permission to access.';            exit(json_encode($res));        }        try{            $token = (array) \Firebase\JWT\JWT::decode($jwt,KEY, ['HS256']);            if($token['exp']connect('127.0.0.1');    return $redis;}
登录后复制

这个dmeo里面用jwt做了一个简单的认证。 其中用到了一个php-jwt的加密包github/firebase/php-jwt

其中KEY为定义的私钥也就是jwt里面的 sign部分,这个一定要保存好。而header部分php-jwt包里面已经帮我们完成了,加密代码如下

    */    public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $head = null)    {        $header = array('typ' => 'JWT', 'alg' => $alg);        if ($keyId !== null) {            $header['kid'] = $keyId;        }        if ( isset($head) && is_array($head) ) {            $header = array_merge($head, $header);        }        $segments = array();        $segments[] = static::urlsafeB64Encode(static::jsonEncode($header));        $segments[] = static::urlsafeB64Encode(static::jsonEncode($payload));        $signing_input = implode('.', $segments);        $signature = static::sign($signing_input, $key, $alg);        $segments[] = static::urlsafeB64Encode($signature);        return implode('.', $segments);    }
登录后复制

可以看出默认的加密的方式是HS256。这也是说jwt安全的原因。现阶段HS256加密还是很安全的。这个包里面也支持证书加密。

加密解密的过程这个包已经帮我们完成了。所以我们只需要定义jwt中的 poyload部分就可以了。也就是demo里面的token部分。加密成功会得到一个加密的Jwt字符串,下次前端在请求api的时候需要携带这个jwt字符串作为认证。在header头里面增加Authorization。在服务端验证的时候回通过取得这个值来验证回话的有效。

下面是poyload的一些常用配置

 $token   = [            #非必须。issuer 请求实体,可以是发起请求的用户的信息,也可是jwt的签发者。            "iss"       => "http://example.org",            #非必须。issued at。 token创建时间,unix时间戳格式            "iat"       => $_SERVER['REQUEST_TIME'],            #非必须。expire 指定token的生命周期。unix时间戳格式            "exp"       => $_SERVER['REQUEST_TIME'] + 7200,            #非必须。接收该JWT的一方。            "aud"       => "http://example",            #非必须。该JWT所面向的用户            "sub"       => "jrocket@example",            # 非必须。not before。如果当前时间在nbf里的时间之前,则Token不被接受;一般都会留一些余地,比如几分钟。            "nbf"       => 1357000000,            # 非必须。JWT ID。针对当前token的唯一标识            "jti"       => '222we',            # 自定义字段            "GivenName" => "Jonny",            # 自定义字段            "name"   => "Rocket",            # 自定义字段            "Email"     => "jrocket@example",                 ];
登录后复制

里面包含的配置可以自由配置,也可以自己添加一些其他的。这些都是网上大家常用的,可以说是一种约定吧。

以上就是JWT是什么?对JWT的简单认识的详细内容,更多请关注易企推科技其它相关文章!


本文地址:网络百科频道 https://www.eeeoo.cn/wangluo/1148446.html,嗨游网一个专业手游免费下载攻略知识分享平台,本站部分内容来自网络分享,不对内容负责,如有涉及到您的权益,请联系我们删除,谢谢!


网络百科
小编:小嗨整编
相关文章相关阅读
  • 魔兽世界泰兰德是什么职业(魔兽世界泰兰德幻化怎么获得)?

    魔兽世界泰兰德是什么职业(魔兽世界泰兰德幻化怎么获得)?

    魔兽世界泰兰德是什么职业(魔兽世界泰兰德幻化怎么获得)?在魔兽世界中,泰兰德是魔兽世界中暗夜精灵种族的代表性角色,她以牧师职业为主。牧师在游戏中拥有强大的治疗和辅助能力,是团队中不可或缺的重要角色。泰兰德作为一名牧师,擅长使用圣光和暗影之力...

  • 文件夹怎么设置密码(文件夹加密最简单的方法)?

    文件夹怎么设置密码(文件夹加密最简单的方法)?

    文件夹怎么设置密码(文件夹加密最简单的方法)?为了避免他人查看,为文件夹设置密码是一种简单有效的保护措施。本文将为您介绍一种最简单的文件夹加密方法,让您轻松实现文件夹的密码保护。文件夹怎么设置密码一、使用压缩软件加密文件夹1.在电脑上安装一...

  • 正方形手工折纸教程(手工折纸教程简单又漂亮)

    正方形手工折纸教程(手工折纸教程简单又漂亮)

    正方形手工折纸教程(手工折纸教程简单又漂亮)手工折纸是一种充满创意和乐趣的技艺,通过简单的折叠,就能让纸张变成各种各样的形状。今天,就让我来为大家介绍一款简单又漂亮的正方形手工折纸教程,让你轻松掌握制作技巧。一、准备材料1.彩色纸张(推荐使...

  • 睡眠app哪个好用(睡眠app是什么原理)?

    睡眠app哪个好用(睡眠app是什么原理)?

    睡眠app哪个好用(睡眠app是什么原理)?随着科技的发展,越来越多的睡眠APP走进了我们的生活。它们通过科学的原理和实用的功能,帮助人们改善睡眠质量,缓解压力。本文将为您盘点几款热门的睡眠APP。睡眠app哪个好用1.小睡眠小睡眠是一款备...

  • 梦幻西游嘉年华是什么时候(梦幻手游嘉年华2024)?

    梦幻西游嘉年华是什么时候(梦幻手游嘉年华2024)?

    梦幻西游嘉年华是什么时候(梦幻手游嘉年华2024)?据悉,梦幻西游嘉年华2024的首场活动已经在2024年1月12日19:30正式开启,为广大玩家带来了一场名为“惊喜宝藏夜”的狂欢盛宴。在这次活动中,不仅有重量级嘉宾的精彩表演,梦幻开发组的...

  • dnf卢克西是什么职业(dnf卢克西三件套属性)?

    dnf卢克西是什么职业(dnf卢克西三件套属性)?

    dnf卢克西是什么职业(dnf卢克西三件套属性)?在dnf中,卢克西并不是一个职业,而是一套装备的名称。卢克西三件套是专为鬼剑士职业设计的装备套装,尤其适合那些依赖觉醒技能输出的角色。卢克西三件套的具体装备包括以下三件:1.卢克西的灵魂狂气...

  • 水彩画教程步骤(水彩画教程初学者简单)

    水彩画教程步骤(水彩画教程初学者简单)

    水彩画教程步骤(水彩画教程初学者简单)下面带来比较简单的初学者水彩画教程步骤。第1步:铅笔削尖,画出建筑物和山的轮廓形。第2步:用黑色针管笔描边,建筑物的窗户排线;树木和花草随意的笔触带过即可。第3步:水彩笔调114号永固浅绿画塔顶的颜色;...

  • win7激活工具免费版(win7激活工具是什么意思)?

    win7激活工具免费版(win7激活工具是什么意思)?

    win7激活工具免费版(win7激活工具是什么意思)?当我们购买一台安装了Windows系统的电脑时,通常会发现系统处于未激活状态。这不仅会影响电脑的正常使用,还可能引发安全风险。因此,理解Windows系统激活的重要性,并学会如何进行系统...

  • 周排行
  • 月排行
  • 年排行

精彩推荐