设置随机密码

时间:2014-04-10 16:08:40

标签: cakephp

我对phpCake及其原则很陌生,并希望了解我的最简洁的解决方案:

我想在添加新用户时设置随机密码。 新用户应该收到一封包含密码的电子邮件。

我看到两种可能性来接近随机密码:

1)在控制器中设置随机密码:

$this->request->data['User']['password'] = 'randomPassword';

' randomPassword'可以通过实现一个组件来获得。

2)随机密码在用户模型内的beforeSave方法中设置。但是我怎么能从控制器内部访问这个密码呢?我需要这个在我的控制器内完成的电子邮件中发送密码。

什么是清洁剂解决方案?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用beforeSave()回调方法执行此操作。

详细信息:http://book.cakephp.org/2.0/en/models/callback-methods.html#beforesave

您可以检测他们是否正在创建"新"用户,而不是更新现有用户,如果他们是新的,则生成密码。保存用户后,将在其中包含密码数据。

// User model
public function beforeSave($options = array()) {
    if(!isset($this->data['User']['id'])) {
        // generate password here
    }
    return true;
}

根据您对问题的评论,我认为发送实际密码并不理想,但是 - 上述答案可用于生成令牌或您想要使用的任何其他内容。

答案 1 :(得分:-1)

$randomPassword = md5(AuthComponent::user("id));
$this->request->data['User']['password'] = $randomPassword;

这将为您提供一个巨大的密码,您可以根据需要切换到前5-10个字符。 $ random密码= $ substr($ random密码,0,10);