jofe/blackgate

用户认证类。

dev-master 2014-12-01 19:45 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:44:03 UTC


README

Blackgate logo

Blackgate 是一个用于 Anax-MVC 和 mos/cdatabase 包的用户认证模块。您可以将模块设置为使用自己的数据库表,或者使用包含的默认表。模块使用用户锁定系统,在会话中三次失败尝试后,会软删除用户。

如何安装?

如果您没有 mos/cdatabase 包,可以通过在您的 Anax-MVC 的 composer.json 文件中添加以下内容从 Packagist 下载::

"require-dev": {
    "mos/cdatabase": "dev-master"
}

安装 blackgate,只需像这样包含:"jofe/blackgate": "dev-master",方式相同:

"require-dev": {
    "mos/cdatabase": "dev-master",
    "jofe/blackgate": "dev-master"
}

如果您已将 cdatabase 与 Anax-MVC 集成,现在是时候将 blackgate 与 Anax 和 cdatabase 包集成。这将通过依赖注入来完成。将以下内容添加到您的入口控制器中:

$di->set('BlackgateOptions', function() use ($di) {
	$options = new \Jofe\Blackgate\COptions();
	$options->setDI($di);
	return $options;
});

现在,blackgate 的 COption 类被设置为在整个框架中可访问的服务。您这样做时,与 blackgate 一起使用的数据库将自动设置为设置的 cdatabase 对象。

现在您可以通过这种方式获取 COptions 对象:$options = $app->BlackgateOptions;

如果您有自己的用户表,您现在必须根据 COptions 中的变量设置相应的变量,将它们分配给类中的获取器和设置器。

注意:您可能希望设置用于散列密码的盐。这可以在该类中完成。

设置您的 COptions 类后,是时候使用传递给构造函数的 COptions 对象实例化 CAuthenticator 了:

$auth = new \Jofe\Blackgate\CAuthenticator($options);

这就是您需要做的全部工作,以开始使用 CAuthenticator 的功能。

然而,在 webroot 文件夹中,您可以找到一个名为 demo.php 的文件,您可以使用它来测试 blackgate 的功能。在这个文件中,您也可以看到如何设置所有内容!

注意:默认用户表包含在 blackgate 的 webroot 中。

那么...我能用这些做什么呢?

此包应与您的用户登录表单一起使用,以验证登录输入以及比较用户密码。所有操作都通过在 CAuthenticator 中调用 "apply()" 函数自动完成。将返回一个布尔值,您还可以通过调用 "getOutput()" 获取预先编写的输出文本。

不过,这个包有一点特别的是,它有一个用户锁定系统,在会话中三次登录失败尝试后,会软删除用户。只有管理员可以直接通过数据库或使用 CAuthenticator 类中可用的 "userRestore()" 函数来恢复用户。

它是如何工作的?

当您第一次实例化 CAuthenticator 时,如果不存在,将添加一个名为 attempt_log 的数据库表。该表将在每次失败尝试时存储用户 ID 和会话 ID。在三次失败尝试后,将设置用户列 "active" 为 NULL,并将列 "deleted" 设置为当前时间。在恢复用户时,将清除该用户的 attempt_log,并对用户表进行反向操作。