Rumah > Java > javaTutorial > teks badan

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

Barbara Streisand
Lepaskan: 2024-10-26 09:40:30
asal
784 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan