joacub/goalio-rememberme

该软件包最新版本(0.1.1)没有可用的许可证信息。

为ZfcUser添加“记住我”功能

0.1.1 2013-08-02 12:51 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:15:34 UTC


README

版本 0.0.2 由goalio UG (haftungsbeschränkt) 创建

简介

GoalioRememberMe是ZfcUser的扩展模块,提供在后续访问网站时保持登录状态的功能。

需求

特性/目标

  • 添加保持登录状态的可插拔行为 [已完成]
  • 提供更新的登录视图 [已完成]
  • 提供如何使用cookie信息的示例,例如区分cookie和常规登录 [未完成]

安装

主要设置

使用composer

  1. 将此项目和需求添加到您的composer.json文件中

    "require": {
        "goalio/goalio-rememberme": "0.*"
    }
  2. 现在运行以下命令以让composer下载ZfcUser:

    $ php composer.phar update

安装后

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

    <?php
    return array(
        'modules' => array(
            // ...
            'ZfcBase',
            'ZfcUser',
            'GoalioRememberMe'
        ),
        // ...
    );
  2. 然后导入位于./vendor/goalio/goalio-rememberme/data/schema.sql的SQL模式。

安装后:Zend\Db

  1. 如果您在服务管理器配置中还没有有效的Zend\Db\Adapter\Adapter,请在./config/autoload/database.local.php中放入以下内容

     <?php
    
     $dbParams = array(
         'database'  => 'changeme',
         'username'  => 'changeme',
         'password'  => 'changeme',
         'hostname'  => 'changeme',
     );
    
     return array(
         'service_manager' => array(
             'factories' => array(
                 'Zend\Db\Adapter\Adapter' => function ($sm) use ($dbParams) {
                     return new Zend\Db\Adapter\Adapter(array(
                         'driver'    => 'pdo',
                         'dsn'       => 'mysql:dbname='.$dbParams['database'].';host='.$dbParams['hostname'],
                         'database'  => $dbParams['database'],
                         'username'  => $dbParams['username'],
                         'password'  => $dbParams['password'],
                         'hostname'  => $dbParams['hostname'],
                     ));
                 },
             ),
         ),
     );
    

安装后:Doctrine2 ORM

很快将有一个单独的模块可以与Doctrine集成。

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

选项

RememberMe模块有一些选项,允许您快速自定义基本功能。安装后,将./vendor/goalio/goalio-rememberme/config/goaliorememberme.global.php.dist复制到./config/autoload/goaliorememberme.global.php,并根据需要更改值。

以下选项可用:

  • remember_me_entity_class - 要使用的实体类名称。如果您想使用自己的实体类而不是默认提供的实体类,则非常有用。默认为GoalioRememberMe\Entity\RememberMe
  • cookie_expire - 登录cookie应过期的秒数整数。默认为2592000(30天)。
  • cookie_domain - 应为此cookie设置的域的字符串值。默认为null。

安全

出于登录目的,此类cookie会降低您的应用程序安全性,因为可以猜测这些值,并且它们除了默认使用的身份/凭证组合之外还提供了一个第二个入口点。

为了减少这种风险,已采取了一些预防措施。例如,在http://jaspan.com/improved_persistent_login_cookie_best_practice中提到的解决方案允许识别是否有人使用了记住我令牌,并向用户(更改密码等)提供必要的提示。

自定义

请对该模块的任何问题发表评论或提供反馈,如果任何内容无法正常工作。除非出现安全问题,否则实际上没有真正需要修改行为的理由,但因为我自己在模块使用上很有创意,所以我非常愿意了解如何扩展功能。

它如何工作

本模块向ZfcUser的流程中添加了一个额外的AuthenticationAdapter。如果之前的任何认证成功(即默认认证)并且用户请求设置cookie,适配器将执行此操作并在数据库中创建必要的更新以标识cookie。

在之后的访问中,模块的引导过程中会检查cookie的存在,以提供早期认证用户的入口点。它存储在会话中,表示登录是通过cookie完成的,因此某些操作应该在没有额外登录的情况下禁止(例如更改密码、访问支付信息等)。

致谢

感谢Daniel Strøm(https://github.com/Danielss89)在cookie适配器等基本工作中的大部分工作。