lm-commons/lmc-user

Laminas 的通用用户注册和认证模块。支持 Laminas\Db 和 Doctrine2。

v3.7.0 2024-06-27 13:16 UTC

README

Latest Stable Version Total Downloads Build Dynamic JSON Badge Static Badge

基于 Evan Coury 和 ZF-Commons 团队的 ZfcUser 构建

简介

LmcUser 是 Laminas 的用户注册和认证模块。LmcUser 为添加用户认证和注册到您的 Laminas 网站提供基础。它设计得非常简单且易于扩展。

更多信息和示例请访问 LmcUser Wiki

要求

功能/目标

  • 通过用户名、电子邮件或两者进行认证(可以选择不使用用户名,仅使用电子邮件)[已完成]
  • 用户注册 [已完成]
  • 表单受 CSRF 保护 [已完成]
  • 内置对 Doctrine2 和 Laminas\Db 的支持 [已完成]
  • 强大的事件系统以允许扩展 [已完成]
  • 提供 ActionController 插件和视图辅助函数 [已完成]

安装

主要设置

使用 composer

  1. 在您的 composer.json 中添加此项目

    "require": {  
        "lm-commons/lmc-user": "^3.1"  
    }  
    
  2. 现在运行以下命令让 composer 下载 LmcUser

    $ php composer.phar update

安装后

  1. 在您的 application.config.php 文件中启用它。

    <?php
    return [
        'modules' => [
            // ...
            'LmcUser',
        ],
        // ...
    ];

安装后:Laminas\Db

  1. 如果您在服务管理器配置中没有有效的 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::class => \Laminas\Db\Adapter\AdapterServiceFactory::class,
        ],
    ],
];

导航到 http://yourproject/user,您应该会看到一个登录页面。

从 ZfcUser 迁移

如果使用 Zend DB,请将表名更新为 lmc_user

替换所有对 ZfcUser 的命名空间引用为 LmcUser

更新对 zfcuser 的引用到小写键 lmcuser

密码安全性

请不要更改密码哈希设置默认值 除非 A) 您已经进行了充分的研究并且完全了解您正在更改什么,并且 B) 您有非常具体的理由偏离默认设置。

如果您计划更改默认密码哈希设置,请阅读以下内容

可以在任何时候更改密码哈希设置而不使现有用户账户无效。现有用户密码将在下一次成功登录时自动重新哈希。

警告:更改默认密码哈希设置可能会引起严重问题,例如使您的哈希密码更容易受到暴力破解攻击或使哈希计算过于昂贵,导致登录和注册对用户来说速度过慢,并给服务器带来沉重的负担。默认设置提供的在两者之间提供了一个非常合理的平衡,适用于 2013 年的计算能力。

选项

LmcUser 模块提供一些选项,允许您快速自定义基本功能。安装 LmcUser 后,将 ./vendor/lm-commons/lmc-user/config/lmcuser.global.php.dist 复制到 ./config/autoload/lmcuser.global.php 并根据需要更改值。

以下选项可用

  • user_entity_class - 要使用的实体类的名称。如果您想使用自己的实体类而不是默认提供的实体类,则很有用。默认为 LmcUser\Entity\User
  • enable_username - 布尔值,启用注册表单上的用户名字段。默认为 false
  • auth_identity_fields - 数组值,指定用户在登录时可以使用哪些字段作为 '身份' 字段。可接受的值:用户名、电子邮件。默认为 `false`。
  • enable_display_name - 布尔值,启用注册表单上的显示名称字段。默认值是 false
  • enable_registration - 布尔值,确定是否允许用户注册。默认值是 true
  • login_after_registration - 布尔值,用户成功注册后自动登录。默认值是 true
  • use_registration_form_captcha - 布尔值,确定是否在用户注册表单上使用验证码。默认值是 false。(注意,目前这仅使用弱的 Laminas\Text\Figlet 验证码。)
  • login_form_timeout - 整数值,指定登录表单 CSRF 安全字段的超时时间(以秒为单位)。默认值是 300 秒。
  • user_form_timeout - 整数值,指定注册表单 CSRF 安全字段的超时时间(以秒为单位)。默认值是 300 秒。
  • use_redirect_parameter_if_present - 布尔值,如果指定了重定向 GET 参数,且认证成功,则用户将被重定向到指定的 URL(如果存在,GET 参数将覆盖下面指定的 login_redirect_route)。默认是 true
  • login_redirect_route 字符串值,应用中用户登录成功后将被重定向到的路由名称。默认是 lmcuser
  • logout_redirect_route 字符串值,用户注销后将被重定向到的应用中的路由名称。默认是 lmcuser/login
  • password_cost - 应该是一个介于 4 和 31 之间的整数。这个数字代表用于散列的迭代计数的基础-2 对数。默认是 14
  • enable_user_state - 布尔值,启用用户状态的使用。在注册/登录过程中是否应该使用用户状态?默认是 false
  • default_user_state - 整数值,注册时的默认用户状态。注册时用户应该具有哪种状态?默认是 1
  • allowed_login_states - 数组值,允许用户登录的状态。当用户尝试登录时,其状态是否是以下之一?如果想让没有状态的用户也能登录,请包括 null。默认值是 null1

更改注册验证码元素

注意 这些说明目前已过时。

默认情况下,用户注册使用的是 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::class,
            ],
            'recaptcha_element' =>  [
                'parameters' => [
                    'spec' => 'captcha',
                    'options'=> [
                        'label'      => '',
                        'required'   => true,
                        'order'      => 500,
                        'captcha'    =>  [
                            'captcha' => 'ReCaptcha',
                            'privkey' => RECAPTCHA_PRIVATE_KEY,
                            'pubkey'  => RECAPTCHA_PUBLIC_KEY,
                        ],
                    ],
                ],
            ],
            \LmcUser\Form\Register::class => [
                'parameters' => [
                    'captcha_element'=>'recaptcha_element',
                ],
            ],
        ],
    ],
];