在ZF2中使用ZfcUser生成用户帐户

时间:2013-04-08 15:58:49

标签: php authentication zend-framework2 zfcuser

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

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

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

我应该注意到我目前也在使用CdliTwoStageSignup和ZfcUser。我也不一定需要将它用于此,但它在工具包中。

我认为ZfcUser 'state' flag在这里可能很有用,但它并不是我想要完成的事情中的艰难部分。

我还在Github上的ZfcUser wiki找到了另一条线索。

我正在寻找使用ZfcUser完成此项工作的技术帮助,但我绝对乐于接受设计理念或改进。

1 个答案:

答案 0 :(得分: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,请不要忘记用户角色。