apex/armor

用户和会话管理

安装: 849

依赖项: 5

建议者: 0

安全: 0

星标: 3

关注者: 2

分支: 0

开放问题: 0

类型:

2.0.7 2023-10-20 08:29 UTC

This package is auto-updated.

Last update: 2024-09-20 10:19:37 UTC


README

设计用于为自定义用户管理系统开发提供一个坚实的基础,并提供了高度可配置的基础功能,包括收集和管理基本用户信息(用户名、密码、电子邮件、电话、地理定位数据等)、电子邮件/电话验证、认证会话、2FA电子邮件/SMS请求、用户隔离的AES256位加密等。这并不是一个本身就是一个用户管理系统,而是旨在通过扩展提供一个基础。它支持

  • 使用单个八个方法适配器接口和模板/视图轻松实现。
  • 轻松存储和管理用户名、密码、电子邮件、电话号码和基本注册信息(创建日期、地理定位数据等)。
  • 支持多个用户组,提供对可能存在于后端应用程序中的不同用户组的集中管理(例如,管理员、客户、具有API访问权限的开发人员、支持人员等)。
  • 高度可配置,支持多种策略,每种策略由21个不同的设置组成,允许数百种不同的配置。
  • 电子邮件地址和电话验证,内置对Vonage / Nexmo的支持,用于发送短信。
  • 只需一行代码即可确保任何请求/代码背后的双因素电子邮件/SMS认证。
  • 为每个用户自动生成4096位RSA密钥对,允许进行基于用户的AES256加密,包括多收件人加密。
  • 用户设备管理,包括“记住我”功能和移动应用程序/Firebase消息。
  • 可选的基于用户的IP限制。
  • 历史活动日志显示对用户账户采取的所有操作。
  • 每个用户的完整登录和会话历史。
  • 与mySQL、PostgreSQL和SQLite进行了全面测试。

扩展和演示

提供不同认证方案功能的几个扩展可用

以下示例使用Syrus模板引擎

安装

使用Composer安装:

composer require apex/armor

请参阅下面的实施指南。

目录

  1. 实施指南
    1. 设置数据库连接
    2. 安装数据库
    3. 适配器接口类
    4. 示例Syrus实现
  2. Armor类
    1. 容器定义
    2. Armor策略配置
    3. 暴力破解策略
    4. 策略管理器
  3. 用户配置文件(创建、加载、删除用户)
    1. ArmorUser类
    2. 注册信息
    3. 验证器
    4. 设备
    5. 待处理的密码更改
    6. IP限制
    7. 活动日志
    8. 登录历史
  4. 验证用户
    1. 电子邮件
    2. 通过OTP的电子邮件
    3. 通过短信的电话
    4. 重置密码
    5. 注册后定义密码
    6. 注册后定义电话
  5. 登录和认证会话
    1. 登录和请求认证
    2. 自动登录
    3. AuthSession类
    4. 加密/解密数据
    5. 会话属性
    6. CSRF
    7. reCaptcha
  6. 双因素请求
    1. 电子邮件
    2. 通过OTP的电子邮件
    3. 通过短信的电话
  7. AES加密
    1. 基于用户的加密
    2. 基于密码的加密

基本用法

use Apex\Armor\Armor;

// Create user
$armor = new Armor();
$user = $armor->createUser('', 'password12345', 'jsmith', 'jsmith@domain.com', '14165551234');
$uuid = $user->getUuid();

// Get user by UUID
$user = $armor->getUuid($uuid);

// Update e-mail address
$user->updateEmail('new@domain.com');


// Check if request is authenticated session
if (!$session = $armor->checkAuth()) { 
    die("You are not logged in");
}

// Require two factor authentication
$session->requireTwoFactor();

// Code below this line will not be executed until authenticated via e-mail / phone.

// Encrypt data to user's RSA key
$data_id = $session->encryptData('some sensitive data');

// Decrypt data at a later date
$text = $session->decryptData($data_id);

支持

如果您有任何问题、问题或反馈,请随时在ApexPl Reddit 子版块上留言,我们会提供快速而有帮助的回复。

关注Apex

未来将有很多好事发生,包括新的高质量开源包,更深入的关于实用主题的文章/教程,等等。通过加入我们网站上的邮件列表或关注Twitter上的@mdizak1来保持最新信息。