В соответствии с http://laravel.com/docs/eloquent можно скрыть атрибуты из массива или преобразование JSON с помощью защищенной $ скрытой переменной в модели.Laravel скрытые атрибуты. например Пароль - безопасность
class User extends Eloquent {
protected $hidden = array('password');
}
Великий, однако при запуске print_r(User::all())
зашифрованный пароль передается от сервера к клиенту внутри объекта пользователя.
Это ограничение не ограничивается только print_r(), если запрашивается конкретный пользователь, $user->password
отобразит зашифрованный пароль в представлении.
Есть ли способ остановить это? Каждый раз, когда запрашивается мой пользовательский объект, пароль отправляется вместе с ним как часть данных, даже если это не обязательно.
Illuminate\Database\Eloquent\Collection Object
(
[items:protected] => Array
(
[0] => User Object
(
[hidden:protected] => Array
(
[0] => password
)
[connection:protected] =>
[table:protected] =>
[primaryKey:protected] => id
[perPage:protected] => 15
[incrementing] => 1
[timestamps] => 1
[attributes:protected] => Array
(
[id] => 1
[email] => [email protected]
[first_name] => Admin
[last_name] => User
[password] => $2y$10$7Wg2Wim9zHbtGQRAi0z6XeapJbAIoh4RhEnVXvdMtFnwcOh5g/W2a
[permissions] =>
[activated] => 1
[activation_code] =>
[activated_at] =>
[last_login] =>
[persist_code] =>
[reset_password_code] =>
[created_at] => 2013-09-26 10:24:23
[updated_at] => 2013-09-26 10:24:23
)
Хорошо ... как насчет '$ user-> password' – Gravy
Это то, что вам нужно использовать в вашем коде или нет. Если вы считаете, что это конфиденциальные данные, никогда не записывайте их на просмотр. :) –
Я согласен с тобой. Но почему тогда вы сможете защитить его автоматически с помощью запроса json или массива, но не через объект? – Gravy