我使用Redbean作为我的php应用程序的ORM。不保存php-redbean数据库的属性
每个用户(在这种情况下的员工)必须有密码才能登录,我想我会为他们生成一个密码,所以他们不必在表单中输入密码。
显然,这意味着它们都必须有一个salt,并且唯一存储的密码应该是实际密码的散列值。因此,我必须将密码发送给用户(否则他们不会知道它: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),但是,tempPassword仍然保存,即使我没有设置它(该列也被创建即使我将它存储为空)。
基本上,这个问题归结为:如何摆脱tempPassword
属性,以便它不保存到数据库?