laxo/authecticate-system

PHP JWT 授权类提供了一种简单的方法来使用 JSON Web Tokens (JWT) 管理用户身份验证和授权。此类旨在无缝处理令牌生成、验证和用户会话管理,确保您的应用程序安全高效的认证。

v1.0.1 2024-06-30 20:23 UTC

This package is auto-updated.

Last update: 2024-09-30 21:11:21 UTC


README

PHP JWT 授权类

安全 | 易用 | 会话管理 | 令牌验证 | IP 验证

适用于管理身份验证和授权

PHP Version PHP Version GitHub License Packagist Downloads GitHub Repo stars

GitHub commit activity GitHub code size in bytes GitHub Discussions Languages



简介

PHP JWT 授权类 提供了一种简单的方法来使用 JSON Web Tokens (JWT) 管理用户身份验证和授权。此类旨在无缝处理令牌生成、验证和用户会话管理,确保您的应用程序安全高效的认证。

功能

  • JWT 编码和解码:安全地编码和解码 JWT。
  • 用户认证:认证用户和管理用户会话。
  • 令牌验证:验证 JWT 以确保它们未被篡改。
  • IP 验证:确保会话期间 IP 地址保持一致。
  • 会话管理:使用自动注销和令牌更新管理用户会话。

安装

  1. 克隆仓库
git clone https://github.com/samirkl/PHP-Authenticate-System.git
  1. 安装依赖项
composer require firebase/php-jwt

用法

Authorize 类包含到您的项目中,并使用其方法来管理认证。

生成令牌

  • 为用户生成 JWT
<?php
require 'Authorize.php';

// User information to protect
$userData = [
    'username' => 'bond',
    'password' => 'hashed_password',
    'name'     => 'James Bond',
    'phone'    => '123-456-7890',
    ...
];

// Authenticate user and set session
Authorize::auth($userData);

验证令牌

  • 使用令牌验证用户的身份
<?php
require 'Authorize.php';

try {
    $isApi = true; // Set to true if this is an API call
    $isAuthenticated = Authorize::verifyIdentity($isApi);

    if ($isAuthenticated) {
        // User is authenticated
        echo 'User is authenticated';
    } else {
        // Authentication failed
        echo 'Authentication failed';
    }
} catch (Exception $e) {
    echo 'Error: ' . $e->getMessage();
}

注销

  • 注销用户
<?php
require 'Authorize.php';

$isLoggedOut = Authorize::logOut();

if ($isLoggedOut) {
    echo 'User logged out successfully';
} else {
    echo 'User was not logged in';
}

方法

Authorize::hash($value)

将给定值编码为 JWT。

  • 参数: string|array $value - 要编码的数据。
  • 返回: string - 编码的 JWT。

Authorize::unHash($value)

解码给定的 JWT。

  • 参数: string $value - 编码的 JWT。
  • 返回: string|false - 解码的数据作为 JSON 字符串或失败时返回 false。
  • 抛出: JsonException

Authorize::auth(array|bool $protectedData = false)

认证用户并设置会话数据。

  • 参数: array|bool $protectedData - 要保护的用户数据(例如,用户名、密码)。

Authorize::verifyIdentity(bool $isApi = false)

使用存储的令牌验证用户身份。

  • 参数: bool $isApi - 如果为 true,则在认证后更新令牌。
  • 返回: bool - 如果认证成功则返回 true,否则返回 false。
  • 抛出: Exception

Authorize::getIPAddress()

获取用户的 IP 地址。

  • 返回: string - 用户的 IP 地址。

Authorize::logOut()

通过清除会话和cookie注销用户。

  • 返回: bool - 如果用户被注销则返回 true,如果用户未登录则返回 false。

Authorize::validateToken($token)

验证给定的令牌。

  • 参数: string $token - 要验证的 JWT。
  • 返回: array|null - 解码的令牌数据作为数组或失败时返回 null。
  • 抛出: JsonException

Authorize::isValidToken($tokenData)

检查令牌数据是否有效。

  • 参数: array $tokenData - 解码的令牌数据。
  • 返回: bool - 如果令牌有效则返回 true,否则返回 false。

许可证

本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。

贡献

欢迎贡献!请随意提交拉取请求。

致谢