fgsl / laminas-user
Laminas 的通用用户注册和认证模块。支持 Laminas\Db 和 Doctrine2。
Requires
- php: ^7.2
- laminas/laminas-authentication: ^2.5
- laminas/laminas-crypt: ^3.0
- laminas/laminas-db: ^2.8
- laminas/laminas-form: ^2.9
- laminas/laminas-http: ^2.5
- laminas/laminas-hydrator: ^3.0
- laminas/laminas-i18n: ^2.7
- laminas/laminas-inputfilter: ^2.7
- laminas/laminas-loader: ^2.5
- laminas/laminas-modulemanager: ^2.7
- laminas/laminas-mvc: ^3.0
- laminas/laminas-mvc-plugin-flashmessenger: ^1.0
- laminas/laminas-mvc-plugin-prg: ^1.0
- laminas/laminas-servicemanager: ^3.0
- laminas/laminas-session: ^2.7
- laminas/laminas-stdlib: ^3.0
- laminas/laminas-validator: ^2.8
- laminas/laminas-view: ^2.8
Requires (Dev)
- laminas/laminas-captcha: ^2.6
- phpmd/phpmd: 1.4.*
- phpunit/phpunit: ~8.5
- squizlabs/php_codesniffer: 1.4.*
Suggests
- laminas/laminas-captcha: Laminas\Captcha if you want to use the captcha component
This package is auto-updated.
Last update: 2021-05-10 13:08:53 UTC
README
由 Flávio Gomes da Silva Lisboa 从 ZfcUser 创建
介绍
LaminasUser 是 Laminas 的用户注册和认证模块。默认情况下,LaminasUser 与 Laminas\Db 一起工作,但还提供了其他存储适配器模块(见下文)。LaminasUser 为在您的 Laminas 网站中添加用户认证和注册提供了基础。它设计得非常简单且易于扩展。
更多信息和示例请参阅 Laminas Wiki
存储适配器模块
默认情况下,LaminasUser 带有使用 Laminas\Db 持久化用户的支持。
要求
- Laminas (最新 master)
- LaminasBase (最新 master)。
特性 / 目标
- 通过用户名、电子邮件或两者(可以放弃用户名的概念,仅使用电子邮件)进行认证 [已完成]
- 用户注册 [已完成]
- 表单受 CSRF 保护 [已完成]
- 内置对 Doctrine2 和 Laminas\Db 的支持 [已完成]
- 强大的事件系统,允许扩展 [已完成]
- 提供 ActionController 插件和视图助手 [已完成]
安装
主要设置
通过克隆项目
- 通过克隆到
./vendor/
中安装 LaminasBase Laminas 模块。 - 将此项目克隆到您的
./vendor/
目录中。
使用 composer
-
在您的 composer.json 中添加此项目和 LaminasBase。
"require": { "fgsl/laminas-user": "^0.2.0" }
-
现在,通过运行以下命令让 composer 下载 LaminasUser:
$ php composer.phar update
安装后
-
在您的
modules.config.php
文件中启用它。<?php return [ 'modules' => [ // ... 'LaminasUser', ], // ... ];
-
然后导入位于
./vendor/zf-commons/laminas-user/data/schema.sql
(如果您使用 Composer 安装)或./vendor/LaminasUser/data/schema.sql
中的 SQL 架构。
安装后:Laminas\Db
- 如果您在服务管理器配置中尚未拥有有效的 Laminas\Db\Adapter\Adapter,请在
./config/autoload/database.local.php
中放置以下内容:
<?php return [ 'db' => [ 'driver' => 'PdoMysql', 'hostname' => 'changeme', 'database' => 'changeme', 'username' => 'changeme', 'password' => 'changeme', ], 'service_manager' => [ 'factories' => [ 'Laminas\Db\Adapter\Adapter' => 'Laminas\Db\Adapter\AdapterServiceFactory', ], ], ];
导航到 http://yourproject/user,您应该会登录到登录页面。
密码安全性
请勿更改密码哈希设置的默认值,除非 A) 您已进行了充分的研究并完全了解您要更改的内容,并且 B) 您有非常具体的理由偏离默认设置。
如果您打算更改默认密码哈希设置,请阅读以下内容
密码哈希设置可以在任何时候更改,而不会使现有用户账户无效。现有用户密码将在下次成功登录时自动重新哈希。
警告:更改默认密码哈希设置可能会引起严重问题,例如使您的哈希密码更容易受到暴力攻击,或者使哈希过程过于昂贵,以至于用户登录和注册速度过慢,对服务器造成巨大负担。默认设置提供了两种之间的合理平衡,适合2013年的计算能力。
选项
LaminasUser模块提供了一些选项,允许您快速自定义基本功能。在安装LaminasUser后,将./vendor/fgsl/laminas-user/config/laminasuser.global.php.dist
复制到./config/autoload/laminasuser.global.php
,并按需更改值。
以下选项可用
- user_entity_class - 要使用的实体类名称。如果您想使用自己的实体类而不是默认提供的实体类,则很有用。默认为
ZfcUser\Entity\User
。 - enable_username - 布尔值,在注册表单中启用用户名字段。默认为
false
。 - auth_identity_fields - 数组值,指定用户可以在登录时用作“身份”字段的字段。可接受值:用户名,电子邮件。
- enable_display_name - 布尔值,在注册表单中启用显示名称字段。默认值是
false
。 - enable_registration - 布尔值,确定是否允许用户注册。默认值为
true
。 - login_after_registration - 布尔值,在用户成功注册后自动登录用户。默认值为
false
。 - use_registration_form_captcha - 布尔值,确定是否在用户注册表单上使用验证码。默认值为
true
。(注意,目前这仅使用了一个较弱的Laminas\Text\Figlet验证码,但我有计划使所有Laminas\Captcha适配器都可用。) - login_form_timeout - 整数值,指定登录表单的CSRF安全字段的超时时间(以秒为单位)。默认值为300秒。
- user_form_timeout - 整数值,指定注册表单的CSRF安全字段的超时时间(以秒为单位)。默认值为300秒。
- use_redirect_parameter_if_present - 布尔值,如果指定了重定向GET参数,则用户验证成功后将被重定向到指定的URL(如果有GET参数,则将覆盖以下指定的login_redirect_route)。
- login_redirect_route 字符串值,应用程序中用户成功登录后将被重定向到的路由名称。
- logout_redirect_route 字符串值,应用程序中用户注销后将被重定向到的路由名称。
- password_cost - 这应该是一个介于4和31之间的整数。这个数字表示用于哈希的迭代计数的2的底数对数。默认为
10
(在i5上约为每秒10次哈希)。 - enable_user_state - 布尔值,启用用户状态使用。在注册/登录过程中是否应该使用用户的状态?
- default_user_state - 整数值,注册时的默认用户状态。注册时用户应该处于什么状态?
- allowed_login_states - 数组值,表示允许用户登录的状态。当用户尝试登录时,他的/她的状态是否为以下之一?如果您希望无状态的用户也能登录,请包含null。
更改注册验证码元素
注意 这些说明目前已过时。
默认情况下,用户注册使用的是Figlet验证码引擎。这是因为它是唯一一个不需要API密钥的引擎。您可以通过依赖注入(DI)来更改验证码引擎。例如,要切换到Recaptcha,您可以将以下内容添加到您的配置文件之一(global.config.php、module.config.php或专门的recaptcha.config.php)。
<?php
// ./config/autoload/recaptcha.config.php
return [
'di'=> [
'instance'=> [
'alias'=> [
// OTHER ELEMENTS....
'recaptcha_element' => 'Laminas\Form\Element\Captcha',
],
'recaptcha_element' => [
'parameters' => [
'spec' => 'captcha',
'options'=> [
'label' => '',
'required' => true,
'order' => 500,
'captcha' => [
'captcha' => 'ReCaptcha',
'privkey' => RECAPTCHA_PRIVATE_KEY,
'pubkey' => RECAPTCHA_PUBLIC_KEY,
],
],
],
],
'LaminasUser\Form\Register' => [
'parameters' => [
'captcha_element'=>'recaptcha_element',
],
],
],
],
];