daedalus-web/authentication

此包已被弃用且不再维护。未建议替代包。
关于此包的最新版本(2.1.1)没有提供许可证信息。

Daedalus 网络框架的认证模块

2.1.1 2018-04-26 15:47 UTC

This package is not auto-updated.

Last update: 2021-10-04 19:29:32 UTC


README

Build Status Scrutinizer Code Quality Packagist version Code Coverage

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 文件