Theo http://laravel.com/docs/eloquent, người ta có thể Ẩn thuộc tính từ mảng hoặc chuyển đổi JSON bằng cách sử dụng biến $ hidden được bảo vệ trong Mô hình.Thuộc tính ẩn Laravel. ví dụ. Mật khẩu - bảo mật
class User extends Eloquent {
protected $hidden = array('password');
}
Tuyệt vời, tuy nhiên khi chạy print_r(User::all())
mật khẩu được mã hóa được gửi từ máy chủ đến ứng dụng khách bên trong đối tượng Người dùng.
Điều này không chỉ giới hạn đối với print_r(), nếu người dùng cụ thể được truy vấn, $user->password
sẽ hiển thị mật khẩu được mã hóa trong chế độ xem.
Có cách nào để ngăn chặn điều này không? Mỗi khi đối tượng người dùng của tôi được truy vấn, mật khẩu sẽ được gửi cùng với nó như là một phần của dữ liệu, mặc dù nó không cần thiết.
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
)
Ok ... về '$ user-> password' – Gravy
Đó là điều bạn có thể sử dụng trên mã của mình. Nếu bạn nghĩ rằng đây là một dữ liệu nhạy cảm, không bao giờ viết nó trên một cái nhìn. :) –
Tôi đồng ý với bạn. Nhưng sau đó tại sao bạn có thể bảo vệ nó tự động thông qua một yêu cầu json hoặc mảng, nhưng không phải thông qua đối tượng? – Gravy