我对phpCake及其原则很陌生,并希望了解我的最简洁的解决方案:
我想在添加新用户时设置随机密码。 新用户应该收到一封包含密码的电子邮件。
我看到两种可能性来接近随机密码:
1)在控制器中设置随机密码:
$this->request->data['User']['password'] = 'randomPassword';
' randomPassword'可以通过实现一个组件来获得。
2)随机密码在用户模型内的beforeSave方法中设置。但是我怎么能从控制器内部访问这个密码呢?我需要这个在我的控制器内完成的电子邮件中发送密码。
什么是清洁剂解决方案?或者有更好的方法吗?
答案 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);