不将php红豆的属性保存到数据库
我正在使用Redbean作为php应用程序的ORM 每个用户(这种情况下的员工)都必须有一个密码才能登录,我想我会为他们生成一个密码,这样他们就不必在表单中键入密码 显然,这意味着它们都必须有一个salt,并且存储的唯一密码应该是实际密码的散列值。因此,我必须将密码发送给用户(否则他们将不知道密码:D),因此必须将其作为对象的属性,而不将其保存到数据库中 模型中有一个生成密码的聪明地方,因此它基本上可以为每个新员工(用户)自行生成密码,因此我创建了这个模型:不将php红豆的属性保存到数据库,php,database,orm,redbean,Php,Database,Orm,Redbean,我正在使用Redbean作为php应用程序的ORM 每个用户(这种情况下的员工)都必须有一个密码才能登录,我想我会为他们生成一个密码,这样他们就不必在表单中键入密码 显然,这意味着它们都必须有一个salt,并且存储的唯一密码应该是实际密码的散列值。因此,我必须将密码发送给用户(否则他们将不知道密码:D),因此必须将其作为对象的属性,而不将其保存到数据库中 模型中有一个生成密码的聪明地方,因此它基本上可以为每个新员工(用户)自行生成密码,因此我创建了这个模型: class Model_employ
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,它仍然会被保存(即使我将它存储为null,也会创建列)
基本上,问题可以归结为:如何去掉
tempPassword
属性,使其不保存到数据库?事实证明,几天前,在
基本上,redbean不会存储任何类扩展的私有属性
当时的解决方案非常简单:
class Model_employee extends RedBean_SimpleModel
{
private $tempPassword;
public function dispense()
{
$this->salt = cypher::getIV(32);
$this->tempPassword = cypher::getIV(8);
$this->password = md5($this->salt . $this->password);
}
}
这不会将密码存储在数据库中,也不会创建列。
当然,如果我想读取密码,我必须添加一个getter(),但是上面解决了直接的问题:)