riculum / php-auth
使用PHP编写的完整用户认证库
v2.0.0
2022-05-21 09:05 UTC
Requires
- riculum/php-pdo: ^1.0
- vlucas/phpdotenv: ^5.3
Requires (Dev)
- phpunit/phpunit: ^9
README
使用PHP编写的完整用户认证库
安装
使用包管理器 composer 安装库。
composer require riculum/php-auth
初始设置
凭据
基本数据库设置可以通过环境变量来设置。在项目的根目录下添加一个 .env
文件。确保 .env
文件已添加到你的 .gitignore
文件中,以免被代码库检查。默认情况下,库会查找以下变量
- DB_HOST
- DB_NAME
- DB_USERNAME
- DB_PASSWORD
- DB_PREFIX
有关如何使用环境变量的更多信息,请参阅 这里
数据库
CREATE TABLE IF NOT EXISTS user ( id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY, uuid VARCHAR(50) NOT NULL UNIQUE, firstname VARCHAR(50) NOT NULL, lastname VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, token VARCHAR(255) NOT NULL, attempts TINYINT NOT NULL DEFAULT 0, online TINYINT NOT NULL DEFAULT 0, verified TINYINT NOT NULL DEFAULT 0, enabled TINYINT NOT NULL DEFAULT 1, updatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, createdAt DATETIME DEFAULT CURRENT_TIMESTAMP )
注意:我们建议设置数据库前缀
配置
导入 vendor/autoload.php 并加载 .env
设置
require_once 'vendor/autoload.php'; use Auth\Core\Authentication as Auth; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load();
使用
注册
使用包含用户数据的关联数组来注册新用户
$user = array( 'firstname' => 'John', 'lastname' => 'Doe', 'email' => 'john.doe@example.com', //must be unique 'password' => '$2y$10$jNtkQSKNni2ELyoi9Y/lpedy7v92FYzqz5ePm1M6jPGY9hb8TCmAq', 'token' => md5(uniqid(rand(), true)) ); try { echo Auth::register($user); } catch (UserAlreadyExistsException $e) { echo 'User with the specified email address already exists'; } catch (Exception $e) { echo "Something went wrong"; }
登录
try { Auth::login('john.doe@example.com', '123456'); echo 'Login successful'; } catch (InvalidEmailException | InvalidPasswordException $e) { echo 'Email or Password are wrong'; } catch(UserNotEnabledException $e) { echo 'User account has been deactivated'; } catch (TooManyAttemptsException $e) { echo 'Too many failed login attempts'; } catch (Exception $e) { echo "Something went wrong"; }
验证
if (Auth::verify()) { echo "Authorization successful"; } else { echo "Authorization failed"; }
登出
try { Auth::logout(); } catch (Exception $e) { echo 'Something went wrong'; }
错误报告 & 贡献
如果您发现了一个错误,请要么在github上创建一个工单,要么发起一个pull request。
版本控制
我们遵循语义(主要.次要.修补)版本控制 (https://semver.org/)。这意味着
- 修补(x.x.patch)版本修复错误
- 次要(x.minor.x)版本引入新的向后兼容功能或改进现有代码。
- 主要(major.x.x)版本引入不向后兼容的根本性变化。
在您的自动化或流程中,您总是可以安全地更新修补和次要版本,而不会出现应用程序失败的风险。