gobline/auth

身份验证组件

v2.0.1 2015-12-07 15:50 UTC

This package is auto-updated.

Last update: 2024-09-12 18:07:29 UTC


README

通常,您的服务器需要一种方式来识别当前请求的用户。身份验证组件提供了一种表示请求用户并对其与数据库或其他数据源进行身份验证的方法。

  • CurrentUserInterface 允许服务器 识别 当前请求的用户。
  • AuthenticatorInterface 允许服务器使用提供的凭据 身份验证 用户。

用法

为了对用户进行身份验证,您首先需要创建一个 CurrentUser 对象。

$user = new Gobline\Auth\CurrentUser();

一旦我们有了用户,我们可以使用实现 AuthenticatorInterface 的适配器来对用户进行身份验证。已经提供了一个实现,即对数据库进行身份验证的 DbAuthenticator

首先,我们需要设置适配器。DbAuthenticator 需要一个 PDO 实例和一个包装有关我们正在对其身份验证的数据库表的元数据的 TableMetadata 实例。

use Gobline\Auth\Authenticator\Db\TableMetadata;
use Gobline\Auth\Authenticator\Db\DbAuthenticator;

$authenticator = new DbAuthenticator($pdo, new TableMetadata('users'));

默认情况下,TableMetadata 假设

  • id 包含用户的 id
  • email 包含用户的 登录名
  • password 包含用户的 密码
  • 密码加密为 bcrypt (可能的值有: bcryptmd5sha1clear

根据您的数据库自定义这些元数据。

use Gobline\Auth\Authenticator\Db\TableMetadata;
use Gobline\Auth\Authenticator\Db\DbAuthenticator;

$metadata = new TableMetadata('users');
$metadata
    ->setColumnId('user_id')
    ->setColumnLogin('user_email')
    ->setColumnRole('user_type')
    ->setColumnPassword('user_password')
    ->setPasswordEncryption('md5');

$authenticator = new DbAuthenticator($pdo, $metadata);

您还会注意到,除了 id、登录名和密码之外,还可以指定包含用户角色(或组、类型)的列。当将身份验证组件与 ACL 组件(通常是这种情况)结合使用时,这特别有用。

现在我们已经设置了适配器,是时候对用户进行身份验证了。

$authenticator->setIdentity('mdecaffmeyer@gmail.com');
$authenticator->setCredential('123456');

$user->isAuthenticated(); // returns false

if ($authenticator->authenticate($user)) {
	echo $user->getId(); // prints the user id from DB

	$user->isAuthenticated(); // returns true
}

身份验证器设置了用户的 id 和登录名。 它还可以添加用户的角色(用于 ACL)和其他列数据。

已验证用户是指其 id 不为 null 的用户。

在请求之间持久化用户数据

虽然上面的方法对第一次请求非常完美,但在随后的请求中用户数据将会丢失。实现持久性的方法之一是将用户数据存储在会话中。Gobline\Auth\Persistence\CurrentUser 类似于 Gobline\Auth\CurrentUser 的装饰器(或任何 Gobline\Auth\CurrentUserInterface 实现),允许在会话中持久化数据。

$user = new Gobline\Auth\CurrentUser();
$user = new Gobline\Auth\Persistence\CurrentUser($user);

安装

您可以使用依赖管理工具 Composer 安装 Gobline Auth。运行 require 命令以解析和下载依赖项

composer require gobline/auth