fatal-errol / goalio-rememberme
为ZfcUser添加Remember Me功能
Requires
- zf-commons/zfc-user: 1.*
This package is not auto-updated.
Last update: 2024-09-23 13:36:53 UTC
README
版本 1.0.0 由goalio UG (haftungsbeschränkt) 创建
简介
GoalioRememberMe是ZfcUser的一个扩展模块,提供在网站后续访问时保持登录状态的功能。
信息
我开发了这个模块用于我们的goalio应用程序。目前还没有测试,由于我们是一家只有两个开发者的小型公司,支持可能有点慢。我非常欢迎任何反馈,拉取请求会更好。
要求
- Zend Framework 2 (ZfcUser的要求)。
- ZfcBase (ZfcUser的要求)。
- ZfcUser (1.*).
功能/目标
- 添加保持登录的可插拔行为[完成]
- 提供更新的登录视图[完成]
- 提供如何使用cookie信息的示例,例如区分cookie和常规登录[未完成]
安装
主要设置
使用composer
-
将此项目和需求添加到您的composer.json中
"require": { "goalio/goalio-rememberme": "1.*" }
-
现在运行命令来让composer下载ZfcUser
$ php composer.phar update
安装后
-
在您的
application.config.php
文件中启用它。<?php return array( 'modules' => array( // ... 'ZfcBase', 'ZfcUser', 'GoalioRememberMe' ), // ... );
-
然后导入位于
./vendor/goalio/goalio-rememberme/data/schema.sql
的SQL模式。
安装后:Zend\Db
-
如果您在服务管理器配置中还没有有效的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中提到的解决方案可以识别是否有人使用了Remember Me令牌,并给用户提供必要的提示(更改密码等)。
自定义
请对此模块存在的问题进行评论,或如果任何内容无法正常使用,请提供反馈。实际上,除非出现安全问题时需要修改行为,否则不应有任何修改行为的需求,因为我自己在模块的使用上很有创意,所以我非常感兴趣了解如何扩展其功能。
它如何工作
此模块向 ZfcUser 中的流程添加了一个额外的 AuthenticationAdapter。如果之前的身份验证成功(即默认情况)并且用户请求设置cookie,适配器会这样做并在数据库中创建必要的更新以识别cookie。
在后来的访问中,模块的引导过程中会检查cookie的存在,以便提供早期登录点以验证用户。它存储在会话中,表明是通过cookie完成的登录,因此某些操作在没有额外登录的情况下应被禁止(例如更改密码、访问支付信息等)。
致谢
感谢Daniel Strøm(https://github.com/Danielss89)在cookie适配器等基本工作上的大部分贡献。