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

为什么使用JWT?

JSON Web Tokens

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

JWT应用场景?

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

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

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

JWT使用流程

1c0de1022ebab88036d683271da9ee9b.png

JWT的核心代码,PHP

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

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;

}

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

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值