Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengabaikan Medan Sensitif dalam JSON Responses dari Spring MVC?

Bagaimana untuk Mengabaikan Medan Sensitif dalam JSON Responses dari Spring MVC?

Barbara Streisand
Barbara Streisandasal
2024-10-26 09:40:30691semak imbas

How to Ignore Sensitive Fields in JSON Responses from Spring MVC?

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!

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