3

我想使用ZfcUser在 Zend Framework 2 中任意生成用户帐户,然后我可以使用激活链接或一些临时凭据通过电子邮件发送给用户。我不确定是否可以扩展 ZfcUser 以安全地执行此操作,因此我正在寻求帮助和建议。

我需要在我的推荐信功能申请中这样做。它由现有用户(以“正常”方式使用 ZfcUser 注册的人)通过提供该人的电子邮件地址来请求某人的推荐信来工作。那时,我想使用 ZfcUser 和给定的电子邮件生成一个帐户,并通知此人有人要求他们提供推荐信,他们应该登录并完成它。

我为每个信件请求提供了一个一次性使用链接,但我觉得为每封电子邮件和相关用户创建一个帐户更有意义,以便收到多个信件请求的人可以登录并成为在一个地方呈现他们的所有请求。我还认为将这些类型的用户帐户分隔到我的数据库中的不同用户表中可能是明智的,或者至少将一个标志字段附加到我当前的用户表模式中。

我应该注意,我目前还在将 CdliTwoStageSignup 与 ZfcUser 结合使用。我也不一定需要为此使用它,但它在工具包中。

我认为ZfcUser 'state' 标志在这里可能很有用,但这并不是我想要完成的真正困难的部分。

我还在Github 上的ZfcUser wiki中找到了另一个关于如何做到这一点的线索。

我正在寻找使用 ZfcUser 完成此任务的技术帮助,但我绝对愿意接受设计理念或总体改进。

4

1 回答 1

8

如果有人正在寻找如何创建可以使用 ZfcUser 进行身份验证的通用用户,只需创建一个新用户,使用 $bcrypt 将明文密码转换为哈希并将其全部保存到您的用户表中。基本情况概述如下:

$newUser = new User();
$newUser->user_id = 'newUserId';
$newUser->email = 'newUser@gmail.com';
$password = 'newUserPassword'//This is extremely bad form, don't do it. You don't want any passwords hanging out in plaintext.

$bcrypt = new Bcrypt();
$bcrypt->setCost(14); 
$newUser->password = $bcrypt->create($password);
$userTable->saveUser($newUser);

我在这里使用的 Bcrypt 成本是 14。您可以使用适合您的应用程序的任何内容,但最好从 ZfcUser 配置文件中提取您的设置。您也可以使用不同的值,Bcrypt 将毫无问题地处理它。

我不建议像在示例中那样在代码中创建帐户并以明文形式保留密码。您通常会立即获得用户输入并对其进行散列而不存储它。

为简洁起见,我省略了一些重要的部分,如用户状态和用户名和显示名等选项。如果您也使用 BjyAuthorize,请不要忘记用户角色。

于 2013-05-05T22:18:12.090 回答