jofe / blackgate
Requires
- php: >=5.4
This package is not auto-updated.
Last update: 2024-09-24 03:44:03 UTC
README
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,并对用户表进行反向操作。
