daedalus-web / authentication
Daedalus 网络框架的认证模块
Requires
- php: ^7.0
- daedalus-web/database: ^2.0
- daedalus-web/dotenv: ^2.0
- daedalus-web/logger: ^2.0
- daedalus-web/sessions: ^2.0
Requires (Dev)
- phpunit/dbunit: ^3.0
- phpunit/php-invoker: ^1.1
- phpunit/phpunit: ^6.2
This package is not auto-updated.
Last update: 2021-10-04 19:29:32 UTC
README
Daedalus 网络应用框架的本地认证模块。
安装
此模块通常作为 Daedalus 网络应用程序的一部分使用。如果您想在非 Daedalus 项目的个人项目中使用它,您可以在 composer.json 文件中添加以下内容
{
"require": {
"daedalus-web/authentication": "^2.0"
}
}
使用方法
此模块处理用户注册和登录。
// Register a new account -- just replace the POST variables below with however you collect from the login form $credentials = [ 'user_name' => $_POST['user_name'], 'password' => $_POST['password'] ]; $id = User::register($credentials); // Logging a user in (using the same $credentials array) $user = User::login($credentials);
密码安全
一旦明文密码传递到 User::register 方法,它将使用您 PHP 版本的默认 password_hash() 函数进行散列。这通常使用安全的 BLOWFISH 散列方法。
默认情况下,散列是通过 password_hash() 使用 $options['cost'] = 10 计算的。您可以通过在 .env 文件中指定不同的 DAEDALUS_AUTHENTICATION_HASH_COST 来增加此值。您的成本越高,所需的计算就越多,但密码就越安全。测试不同的成本以找到最适合您生产环境的方法。我们不推荐低于 $options['cost'] = 10,这是默认值。
用户详细信息
您可以在注册过程中提供任意数组形式的用户详细信息。以下是一些您可能希望存储的信息
- 电子邮件地址
- 年龄或出生日期
- 订阅通讯
- 昵称
要保存注册过程中的用户详细信息,只需将用户详细信息的关联数组作为第二个参数传递给 User::register() 即可。
$details = [ 'email_address' => 'placeholder@example.com', 'newsletter_opt_in' => 'true', 'donor_status' => 'past-donor' ]; $id = User::register($credentials, $details);
用户角色和权限
权限是基于角色的。要么用户有一个角色,可以访问某些内容,要么没有。要创建新角色
$role_details = [ 'description' => 'Customer with an active subscription', 'name' => 'subscriber' ]; Role::create($role_details);
要向用户添加或删除角色
User::addRole($userID, Role::get('subscriber')); User::removeRole($userID, Role::get('subscriber'));
要验证用户是否有角色,可以使用
User::isApproved('subscriber'); // You can also pass multiple options instead of using OR logic, of which the user only needs to satisfy one User::isApproved(['subscriber', 'lifetime_pass', 'vip']);
关于
要求
Daedalus 认证已全面测试,以确保与以下版本兼容
- PHP 7.0
- PHP 7.1
Daedalus 认证 不会 在 PHP 5.4 或更早版本上工作。此模块使用了 PHP 内置函数 password_hash() 和 password_verify(),这些函数是在 PHP 5.5 中实现的。
严格来说,此模块可以修改以支持 PHP 5.5+,但我们使用了在 7.0 之前的 PHP 版本中不可用的严格变量类型。由于 PHP 5.6 已不再接收积极支持(并且只会在接下来的一年中接收安全更新),我们强烈建议使用 PHP 7 或更高版本开始任何新项目。
提交错误和功能请求
错误和功能请求在 GitHub 上跟踪
作者
Josh Grancell - josh@joshgrancell.com - https://github.com/jgrancell
许可证
Daedalus 认证遵循 MIT 许可证 - 详细信息请参阅 LICENSE 文件