【问题标题】:Generating User Accounts with ZfcUser in ZF2在 ZF2 中使用 ZfcUser 生成用户帐户
【发布时间】:2013-03-30 19:26:54
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 好吧,你的名字:这当然是可能的,但相当复杂,而且不容易做到。 “状态”标志在那里,但您也可以扩展用户实体。怎么做完全取决于你,但要“在 SO 上快速做”并不容易;)
  • 一种更简单的方法是使用单独的表格,您可以通过电子邮件存储这些请求。然后,您只需向该电子邮件地址发送一封电子邮件,他们就可以正常注册。您将能够收到他们的所有请求,因为它们与同一电子邮件相关联。
  • 谢谢@Sam。我知道这里有几个级别要经过,但我正在寻找更多关于如何解决这个问题的建议,而不是完整解决方案的代码。我现在会考虑扩展用户实体。
  • @AydinHassan 这是可能的 - 感谢您的建议。它可能比我想象的更实用。我想我正在考虑建立一个帐户,以便在创建所有请求时将它们关联起来,但我想这最终并不重要。当用户开始创建帐户时,我只需要查看请求表并找到所有待处理的请求。

标签: php authentication zend-framework2 zfcuser


【解决方案1】:

如果有人正在寻找如何创建可以使用 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,请不要忘记用户角色。

【讨论】:

  • 如果我想将此代码添加到可以从命令行执行并提示输入用户名、电子邮件和密码的脚本中怎么办?您将如何在 Zend 中实现这一点?
猜你喜欢
  • 1970-01-01
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多