gobline / auth
身份验证组件
Requires
- php: >=5.6.0
- gobline/session: ~2.0
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 (可能的值有: bcrypt , md5 , sha1 或 clear )
根据您的数据库自定义这些元数据。
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