Abaikan Medan Sensitif dalam JSON Responses daripada Spring MVC
Apabila mengendalikan maklumat sensitif dalam RESTful API, adalah penting untuk mengawal medan mana objek model didedahkan dalam respons JSON. Dalam Spring MVC, anda boleh mengecualikan medan tertentu secara dinamik semasa menghantar objek sebagai JSON.
Reka Bentuk Objek Model dengan Anotasi
Konfigurasikan kelas model Java anda (@Entity) dengan anotasi @JsonIgnoreProperties(ignoreUnknown = true). Ini akan mengabaikan sebarang sifat yang tidak diketahui apabila menyahsiri JSON ke dalam objek.
<code class="java">@Entity @Table(name = "user") @JsonIgnoreProperties(ignoreUnknown = true) public class User { // ... (Model fields) }</code>
Kaedah Pengawal
Dalam pengawal Spring MVC, dapatkan semula objek pengguna daripada pangkalan data menggunakan lapisan perkhidmatan.
<code class="java">@RequestMapping(value = "/getUser/{userId}", method = RequestMethod.GET) @ResponseBody public User getUser(@PathVariable Integer userId) throws Exception { User user = userService.get(userId); return user; }</code>
Pengecualian Terpilih Menggunakan Anotasi
Untuk mengecualikan medan tertentu secara selektif, anotasi kaedah getter yang sepadan dengan @JsonIgnore. Ini akan mengabaikan medan ini semasa penyirian JSON.
<code class="java">@JsonIgnore public String getEncryptedPwd() { return encryptedPwd; }</code>
Pengecualian Dinamik
Jika senarai medan yang akan dikecualikan berbeza-beza berdasarkan pengguna, anda boleh melaksanakan penyelesaian tersuai:
<code class="java">@RequestMapping(value = "/getUser/{userId}", method = RequestMethod.GET) @ResponseBody public User getUser(@PathVariable Integer userId, @RequestHeader("username") String username) { User user = userService.get(userId); // Get excluded fields list based on the logged-in user List<String> excludedFields = getExcludedFields(username); // Iterate through the excluded fields and set their values to null for (String field : excludedFields) { switch (field) { case "encryptedPwd": user.setEncryptedPwd(null); break; // ... (Similar logic for other fields) } } return user; }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengabaikan Medan Sensitif dalam JSON Responses dari Spring MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!