PHP アプリケーションの ORM として Redbean を使用しています。
すべてのユーザー (この状況では従業員) は、ログインするためにパスワードを持っている必要があります。
明らかに、これはすべてにソルトが必要であることを意味し、保存されるパスワードは実際のパスワードのハッシュ値のみである必要があります。そのため、パスワードをユーザーに送信する必要があり (そうしないと、ユーザーはそれを知りません: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 は保存されます (列も作成されます。 nullとして保存しても)。
基本的に、質問は次のようになります。データベースに保存されないように、プロパティを削除するにはどうすればよいですか?tempPassword