Rumah  >  Artikel  >  Java  >  Bagaimanakah Saya Boleh Menggunakan @JsonIgnore untuk Mengawal Pensirilan Tanpa Menyekat Penyahserikatan?

Bagaimanakah Saya Boleh Menggunakan @JsonIgnore untuk Mengawal Pensirilan Tanpa Menyekat Penyahserikatan?

Barbara Streisand
Barbara Streisandasal
2024-11-26 03:15:17940semak imbas

How Can I Use @JsonIgnore to Control Serialization Without Blocking Deserialization?

JsonAbaikan Anotasi untuk Pensirian Terkawal dan Penyahserikatan

Apabila berurusan dengan data sensitif dalam objek pengguna, adalah penting untuk mengelakkan pendedahan mereka semasa bersiri. Anotasi @JsonIgnore berfungsi untuk tujuan ini, tetapi secara tidak sengaja boleh menyekat penyahserikatan.

Isu Penyahserikatan dengan @JsonIgnore

Dalam senario ini, anotasi @JsonIgnore pada sifat kata laluan menghalang sirinya kepada pelanggan. Walau bagaimanapun, ia juga menyekat harta daripada dinyahsiri dengan kata laluan yang betul, menjadikan pendaftaran mencabar.

Penyelesaian untuk Kejahilan Terpilih

Bergantung pada versi Jackson, dua pendekatan boleh digunakan:

Versi Jackson sebelum 1.9:

  • Tambah @JsonAbaikan pada kaedah getter sahaja.
  • Tambah anotasi @JsonProperty khusus dengan nama medan JSON pada kaedah penetap kata laluan.

Jackson versi 1.9 dan di atas:

  • Tambah @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) pada medan kata laluan dalam kelas.

Kod Contoh:

Dalam Java:

@JsonIgnore(serialize = true, deserialize = false)
private String password;

@JsonProperty("password")
private void setPassword(String password) {
    this.password = password;
}

Pendekatan ini membenarkan @JsonIgnore digunakan hanya semasa penyirian, membenarkan kata laluan dinyahsiri dengan betul sambil melindunginya daripada pendedahan yang tidak diingini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan @JsonIgnore untuk Mengawal Pensirilan Tanpa Menyekat Penyahserikatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn