前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用JWT实现Token认证,前端H5登录加密

使用JWT实现Token认证,前端H5登录加密

作者头像
sinnoo
发布2022-01-04 16:26:04
1K0
发布2022-01-04 16:26:04
举报
文章被收录于专栏:技术人生技术人生

为什么使用JWT?

JSON Web Tokens

随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢发展成为token的方式做登录身份校验,然后通过token去取redis中的缓存的用户信息,随着之后jwt的出现,校验方式更加简单便捷化,无需通过redis缓存,而是直接根据token取出保存的用户信息,以及对token可用性校验,单点登录更为简单。

在线JWT生成器

JWT应用场景?

Authorization (授权) : 这是使用JWT的最常见场景。一旦用户登录,后续每个请求都将包含JWT,允许用户访问该令牌允许的路由、服务和资源。单点登录是现在广泛使用的JWT的一个特性,因为它的开销很小,并且可以轻松地跨域使用。

Information Exchange (信息交换) : 对于安全的在各方之间传输信息而言,JSON Web Tokens无疑是一种很好的方式。因为JWTs可以被签名,例如,用公钥/私钥对,你可以确定发送人就是它们所说的那个人。另外,由于签名是使用头和有效负载计算的,您还可以验证内容没有被篡改。

登录认证方案,将认证信息,返回给客户端,存储到客户端。下次访问其他页面,需要从客户端传递认证信息回服务端。

JWT使用流程

JWT的核心代码,PHP

data就是用户信息数组,除了代码中base64的加密方式,当然你也可以设置更复杂的加密方式来的到ret得值

代码语言:javascript
复制
    public function setToken($data) {
        $expire = $ext['expires'] = time()+3600*24;//24小时过期时间;

        $ext['ip'] = (new \S\Util\Ip())->getClientIp();
        $ret = array_merge($data, $ext);
        $ret = base64_encode(json_encode($ret));
        $sign = hash_hmac('md5', $ret, '12D&(HS^H!lfV%Scj9fjEGhOyIP');
        return $ret . '.' . $sign;
    }   
代码语言:javascript
复制
    public function getToken($auth) {
        $data = explode('.', $auth);
        $sign = hash_hmac('md5', $data[0], '12D&(HS^H!lfV%Scj9fjEGhOyIP');
        if ($sign !== $data[1]) {
            return false;
        }   
        return json_decode(base64_decode($data[0]), true);
    } 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020/12/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么使用JWT?
    • JSON Web Tokens
    • JWT应用场景?
    • JWT使用流程
    • JWT的核心代码,PHP
    相关产品与服务
    访问管理
    访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档