CakePHP извлекает модель пользователя, но по умолчанию пароль не возвращается - PullRequest
0 голосов
/ 23 августа 2011

Я пишу API, который возвращает всех пользователей, которые соответствуют определенным критериям, и связанные с ними модели в формате JSON.

Мой вопрос - как мне сделать так, чтобы он автоматически не возвращал хешированное поле пароля при возврате пользовательских данных клиенту, который получает мои данные JSON? Похоже, что это должно быть стандартной проблемой, но без использования аргумента "/", могу ли я сделать так, чтобы поведение по умолчанию не возвращало хешированный пароль, когда я делаю простой поиск?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 23 августа 2011

Я склонен делать это в beforeFind(), чтобы можно было сделать запрос , включающий пароль:

public function beforeFind( $query ) {
  # Don't return the password field unless it's specified.
  $query['fields'] = empty( $query['fields'] )
    ? array_diff( array_keys( $this->schema() ), array( 'password' ) )
    : $query['fields'];

  return $query;
}

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

2 голосов
/ 23 августа 2011

Вы можете использовать модели afterFind() для удаления пароля из результирующего набора следующим образом:

public function afterFind($results = array(), $primary) {
    foreach($results as $key => $value) {
        if(isset($results[$key][$this->modelAlias]['password'])) {
            unset($results[$key][$this->modelAlias]['password']);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...