我使用 Redbean 作为我的 php 应用程序的 ORM。
每个用户(这种情况下的员工)都必须有密码才能登录,我想我会为他们生成一个密码,所以他们不必在表单中输入密码。
显然,这意味着它们都必须有一个盐,并且唯一存储的密码应该是实际密码的哈希值。因此,我必须将密码发送给用户(否则他们不会知道它:D),因此必须将其作为对象的属性,而不将其保存到数据库中。
生成密码的一个聪明地方是在模型中,因此它基本上为每个新员工(用户)自己完成,因此我创建了这个模型:
class Model_employee extends RedBean_SimpleModel
{
public function dispense()
{
$this->salt = cypher::getIV(32);
$this->tempPassword = cypher::getIV(8);
$this->password = md5($this->salt . $this->password);
}
public function update()
{
unset($this->tempPassword);
}
}
生成密码dispense()
工作正常。应该在update()
保存bean之前运行,所以它是(如果我将属性设置为null,它会保存为null),但是,tempPassword仍然保存,即使我取消设置它(列也被创建,即使我将其存储为空)。
基本上,问题归结为:如何摆脱该tempPassword
属性,使其不保存到数据库中?