juratitov/zfc-user

一个通用的用户注册和认证模块,适用于ZF2。支持多个适配器,内置对Zend\Db的支持。

1.2.1 2014-07-14 10:03 UTC

This package is not auto-updated.

Last update: 2024-09-24 04:01:43 UTC


README

Build Status Code Coverage Latest Stable Version Latest Unstable Version

由Evan Coury和ZF-Commons团队创建

简介

ZfcUser是用于Zend Framework 2的用户注册和认证模块。默认情况下,ZfcUser与Zend\Db一起工作,但也可以使用其他存储适配器模块(见下文)。ZfcUser为将用户认证和注册添加到您的ZF2网站提供基础。它设计得非常简单,易于扩展。

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

存储适配器模块

默认情况下,ZfcUser附带了对使用Zend\Db持久化用户的支持。但是,通过安装可选的替代存储适配器模块,您可以使用其他方法持久化用户。

要求

特性/目标

  • 通过用户名、电子邮件或两者进行认证(可以选择不使用用户名,而仅使用电子邮件)[已完成]
  • 用户注册[已完成]
  • 表单受CSRF保护[已完成]
  • 默认支持Doctrine2 Zend\Db[已完成]
  • 注册表单受CAPTCHA保护[进行中](需要更多选项)
  • 强大的事件系统以允许扩展[进行中]

安装

主要设置

通过克隆项目

  1. 通过将其克隆到./vendor/中安装ZfcBase ZF2模块。
  2. 将此项目克隆到您的./vendor/目录中。

使用Composer

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

    "require": {
        "zf-commons/zfc-user": "dev-master"
    }
  2. 现在运行以下命令让Composer下载ZfcUser

    $ php composer.phar update

安装后

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

    <?php
    return array(
        'modules' => array(
            // ...
            'ZfcBase',
            'ZfcUser',
        ),
        // ...
    );
  2. 然后导入位于./vendor/zf-commons/zfc-user/data/schema.sql(如果您使用Composer安装)或./vendor/ZfcUser/data/schema.sql中的SQL模式。

安装后:Doctrine2 ORM

即将推出...

安装后:Doctrine2 MongoDB ODM

即将推出...

安装后:Zend\Db

  1. 如果您在服务管理器配置中没有有效的Zend\Db\Adapter\Adapter,请在./config/autoload/database.local.php中放入以下内容
<?php
return array(
    'db' => array(
        'driver'    => 'PdoMysql',
        'hostname'  => 'changeme',
        'database'  => 'changeme',
        'username'  => 'changeme',
        'password'  => 'changeme',
    ),
    'service_manager' => array(
        'factories' => array(
            'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
        ),
    ),
);

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

密码安全

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

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

密码哈希设置可随时更改,而不会使现有用户帐户无效。现有用户密码将在下次成功登录时自动重新哈希。

警告:更改默认密码哈希设置可能会导致严重问题,例如使哈希密码更容易受到暴力攻击,或者使哈希过程过于昂贵,导致用户登录和注册速度过慢,给服务器造成巨大负担。默认设置提供了两种之间的合理平衡,适用于2013年的计算能力。

选项

ZfcUser模块提供了一些选项,允许您快速自定义基本功能。安装ZfcUser后,将./vendor/zf-commons/zfc-user/config/zfcuser.global.php.dist复制到./config/autoload/zfcuser.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。(注意,目前这仅利用了较弱的Zend\Text\Figlet验证码,但我有计划使所有Zend\Captcha适配器都能工作。)
  • login_form_timeout - 整数值,指定登录表单的CSRF安全字段的超时时间(以秒为单位)。默认值为300秒。
  • user_form_timeout - 整数值,指定注册表单的CSRF安全字段的超时时间(以秒为单位)。默认值为300秒。
  • use_redirect_parameter_if_present - 布尔值,如果指定了重定向GET参数,当身份验证成功时(如果存在,GET参数将覆盖以下指定的login_redirect_route),用户将被重定向到指定的URL。
  • login_redirect_route 字符串值,应用程序中用户登录成功后将重定向到的路由名称。
  • logout_redirect_route 字符串值,应用程序中用户注销后将重定向到的路由名称。
  • password_cost - 这应该是一个介于4到31之间的整数。该数字代表用于哈希的迭代计数的二进制对数。默认为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 array(
    'di'=> array(
        'instance'=>array(
            'alias'=>array(
                // OTHER ELEMENTS....
                'recaptcha_element' => 'Zend\Form\Element\Captcha',
            ),
            'recaptcha_element' => array(
                'parameters' => array(
                    'spec' => 'captcha',
                    'options'=>array(
                        'label'      => '',
                        'required'   => true,
                        'order'      => 500,
                        'captcha'    => array(
                            'captcha' => 'ReCaptcha',
                            'privkey' => RECAPTCHA_PRIVATE_KEY,
                            'pubkey'  => RECAPTCHA_PUBLIC_KEY,
                        ),
                    ),
                ),
            ),
            'ZfcUser\Form\Register' => array(
                'parameters' => array(
                    'captcha_element'=>'recaptcha_element',
                ),
            ),
        ),
    ),
);