Intereting Posts
Проверка подлинности Windows с помощью PHP на IIS Если вы очистите содержимое (ob_flush) запроса AJAX, содержимое загрузится? Как обрабатывать ошибку json-декодирования с помощью try and catch MySQL – удалить значение в строке, а не удалять строку Как мы можем обновить PHP в существующем доступном wamp, установленном в Windows? Имена файлов автоматического прироста PHP Каковы преимущества создания хранимых процедур в SQL и MySQL? Как добавить к этому обновлению инструкцию SQL и сделать выпадающий список тоже для нее datatables формат столбца из нескольких источников? (Обработка на стороне сервера) Обмен переменными между функциями в PHP без использования глобальных переменных Рекомендации по проверке защищенных методов с помощью PHPUnit (на абстрактных классах) Как я могу динамически добавлять поля ввода в форму? PHP: file_get_contents ($ loc) не работает Нужен скрипт php для загрузки файла на удаленном сервере и сохранения локально PHP mysqli подготовил инструкцию для хранимой процедуры с параметром out

Не сохранять свойство php-redbean в базе данных

Я использую Redbean как ORM для своего php-приложения.

Каждый пользователь (сотрудник в этой ситуации) должен иметь пароль для входа в систему, и я думал, что я бы сгенерировал его для них, поэтому им не нужно вводить его в форме.

Очевидно, это означает, что все они должны иметь соль, и единственным сохраненным паролем должно быть хеш-значение фактического пароля. Из-за этого я должен отправить пароль пользователю (иначе они не будут знать его: 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() запускается непосредственно перед сохранением компонента и, следовательно, он (если я уничтожу его свойство как null), тем не менее, tempPassword сохраняется, даже если я его отключил (столбец также созданный, даже если я сохраню его как null).

В принципе, вопрос сводится к следующему: как мне избавиться от свойства tempPassword , чтобы он не был сохранен в базе данных?

Оказывается, кто-то еще спросил этот точный вопрос пару дней назад на форуме readBean .

В принципе, 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 (), если я хочу прочитать пароль, но выше решает ближайшую проблему 🙂