JWT实现(PHP)

JWT(JSON Web Token)是一种广泛用于B/S架构的权限认证技术,特别适合分布式服务。它通过非存储特性减少服务端负担,有效防止中间人攻击,虽然会增加一定的计算成本,但在当前前后端分离的环境中,其优势显著。
摘要由CSDN通过智能技术生成

       JWT是一种扩展性极强的B/S架构权限认证的技术,其优势尤其在分布式服务架构时明显,在如今前后端分离如日中天的时代背景下,如若使用得当其不仅可以降低中间人会话劫持的风险,并且由于其无存储特性从而降低服务端内存资源开销,当然在一定程度上以消耗一定算力作为代价,但基本上可以忽略。

加密部分:

<?php
namespace app\middleware;

class JWT
{
    protected $header=null;

    protected $payload=null;

    private $secret='jwtadmin';

    private $expires=3600;

    public function __construct($user=''){
        $this->initHeader();
        $this->initPayload($user);
    }

    private function initHeader(){
        $this->header['type']='JWT';
        $this->header['alg']="HS256";
    }

    private function initPayload($user){
        if($user=='' || $user==null){
            return false;
        }
        $this->payload['iss']='jwtadmin';
        $this->payload['sub']='admin';
  
JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它是一种基于JSON的安全令牌,由三部分组成:头部(Header)、载荷(Payload)和签名(Signature)。 在PHP中使用JWT进行登录验证的步骤如下: 1. 安装依赖:使用Composer安装`firebase/php-jwt`库,该库提供了JWT的相关功能。 2. 生成Token:在用户登录成功后,服务器可以生成一个JWT Token并返回给客户端。生成Token的过程包括设置有效载荷信息、设置过期时间、设置密钥等。 ```php use \Firebase\JWT\JWT; // 设置有效载荷信息 $payload = array( "user_id" => $user_id, "username" => $username ); // 设置过期时间 $expiration_time = time() + 3600; // 1小时后过期 // 设置密钥 $secret_key = "your_secret_key"; // 生成Token $token = JWT::encode($payload, $secret_key); ``` 3. 验证Token:在客户端发送请求时,将Token放在请求头或请求参数中。服务器接收到请求后,需要验证Token的有效性和完整性。 ```php use \Firebase\JWT\JWT; // 获取Token $token = $_SERVER['HTTP_AUTHORIZATION']; // 设置密钥 $secret_key = "your_secret_key"; try { // 验证Token $decoded = JWT::decode($token, $secret_key, array('HS256')); // Token验证通过,可以获取有效载荷信息 $user_id = $decoded->user_id; $username = $decoded->username; } catch (Exception $e) { // Token验证失败 // 处理验证失败的逻辑 } ``` 以上是使用PHP进行JWT登录验证的基本步骤。通过JWT,服务器可以生成一个安全的Token,并在每次请求时验证Token的有效性,从而实现用户身份的验证和授权。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值