newtonsnerds/goalio-rememberme

为 ZfcUser 添加“记住我”功能

1.0.2 2016-07-03 01:09 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:09:25 UTC


README

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

简介

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

信息

我开发这个模块用于我们的 goalio 应用程序。目前还没有测试,由于我们是一家只有两名开发人员的小公司,支持可能有点慢。我非常感谢任何反馈,拉取请求就更好了。

要求

功能/目标

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

安装

主要设置

使用 composer

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

    "require": {
        "newtonsnerds/goalio-rememberme": "1.*"
    }
  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 集成模块 GoalioRememberMeDoctrineORM

使用

导航到 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 中提到的解决方案允许识别是否有人使用了“记住我”令牌,并为用户提供必要的提示(更改密码等)。

自定义

请对此模块中存在的问题进行评论,或者如果任何内容无法直接使用(Out-of-the-Box)则提供反馈。实际上,除非出现安全问题,否则通常不需要修改行为,但鉴于我对模块的使用充满创意,我非常愿意了解如何扩展其功能。

它是如何工作的

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

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

致谢

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