我使用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
屬性,以便它不保存到數據庫?