国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot利用自定義json序列化器實(shí)現(xiàn)敏感字段數(shù)據(jù)脫敏

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot利用自定義json序列化器實(shí)現(xiàn)敏感字段數(shù)據(jù)脫敏。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

SpringBoot利用自定義json序列化器實(shí)現(xiàn)敏感字段數(shù)據(jù)脫敏

物料準(zhǔn)備:

1.hutool依賴

2.自定義的jackson序列化器

3.測(cè)試@JsonSerialize效果

引入hutool依賴

因?yàn)榘咐a用到了hutool提供的DesensitizedUtil數(shù)據(jù)脫敏工具類,這里要引入hutool的依賴。

如果你需要自定義 數(shù)據(jù)脫敏的邏輯,可以不引入這個(gè)依賴文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-524215.html

<dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.8</version>
        </dependency>

自定義jackson序列化器

自定義一個(gè)手機(jī)號(hào)脫敏序列化器

package com.example.demo.plugin;

import cn.hutool.core.util.DesensitizedUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.io.IOException;
@Slf4j
@Component
public class MobileMskJsonSerializer extends JsonSerializer<String> {
    @Override
    public void serialize(String s,
                          JsonGenerator jsonGenerator,
                          SerializerProvider serializerProvider) throws IOException {

        String s1 = DesensitizedUtil.mobilePhone(s);
        log.info("mobilePhone數(shù)據(jù):{}脫敏后的值是:{}",s,s1);
        jsonGenerator.writeString(s1);


    }
}

自定義一個(gè)郵箱脫敏序列化器

package com.example.demo.plugin;

import cn.hutool.core.util.DesensitizedUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.io.IOException;
@Slf4j
@Component
public class MailMskJsonSerializer extends JsonSerializer<String> {
    @Override
    public void serialize(String s, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        String s1 = DesensitizedUtil.email(s);
        log.info("email數(shù)據(jù):{}脫敏后的值是:{}",s,s1);
        jsonGenerator.writeString(s1);
    }
}

注冊(cè)剛剛自定義的json序列化器

package com.example.demo.plugin;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JacksonCfg {

    @Autowired
    private MobileMskJsonSerializer  mobileMskJsonSerializer;
    @Autowired
    private MailMskJsonSerializer mailMskJsonSerializer;

    /**
     * 可以同時(shí)注冊(cè)多個(gè)自定義的jackson 序列化器
     * @return
     */
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer objectMapperBuilderCustomizer(){
        return builder -> {
            builder.serializerByType(String.class,mobileMskJsonSerializer);
            builder.serializerByType(String.class,mailMskJsonSerializer);
        };
    }


}

測(cè)試@JsonSerialize效果

在實(shí)體類中使用@JsonSerialize注解

package com.example.demo.orm.po;

import cn.hutool.core.util.DesensitizedUtil;
import com.example.demo.plugin.MailMskJsonSerializer;
import com.example.demo.plugin.MobileMskJsonSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;


@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Account implements Serializable {
    private static final long serialVersionUID = -8114863398578320034L;
    private Integer id;
    private String username;



    // @JsonSerialize 既可以用在字段上 ,也可以用在類上
    // 用在字段上時(shí),只對(duì)某個(gè)字段生效
    // 用在類上時(shí),對(duì)類中所有字段生效.(優(yōu)先級(jí)更高)
    // 一般常用在 字段上,對(duì)某個(gè)字段做特殊的序列化處理

    //使用 手機(jī)號(hào)脫敏序列號(hào)器
    @JsonSerialize(using = MobileMskJsonSerializer.class)
    private String mobile;

    //使用 郵箱脫敏序列號(hào)器
    @JsonSerialize(using = MailMskJsonSerializer.class)
    private String mail;

}

測(cè)試查詢結(jié)果

@Test
void test81902() throws JsonProcessingException {
        Account oneById = accountMapper.findOneById(17);
        System.err.println(oneById);
    
        //使用jackson 序列化java對(duì)象
        ObjectMapper objectMapper = new ObjectMapper();
        String msk = objectMapper.writerWithDefaultPrettyPrinter()
                .writeValueAsString(oneById);
        System.err.println(msk);
 }
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7135ce0a]
Account(id=17, username=ert, mobile=13273629312, mail=kew5612@163.com)
2023-07-05 20:28:38.536  INFO 17952 --- [           main] c.e.demo.plugin.MobileMskJsonSerializer  : mobilePhone數(shù)據(jù):13273629312脫敏后的值是:132****9312
2023-07-05 20:28:38.537  INFO 17952 --- [           main] c.e.demo.plugin.MailMskJsonSerializer    : email數(shù)據(jù):kew5612@163.com脫敏后的值是:k******@163.com
{
  "id" : 17,
  "username" : "ert",
  "mobile" : "132****9312",
  "mail" : "k******@163.com"
}

到了這里,關(guān)于SpringBoot利用自定義json序列化器實(shí)現(xiàn)敏感字段數(shù)據(jù)脫敏的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 協(xié)議,序列化,反序列化,Json

    協(xié)議,序列化,反序列化,Json

    協(xié)議究竟是什么呢?首先得知道主機(jī)之間的網(wǎng)絡(luò)通信交互的是什么數(shù)據(jù),像平時(shí)使用聊天APP聊天可以清楚,用戶看到的不僅僅是聊天的文字,還能夠看到用戶的頭像昵稱等其他屬性。也就可以證明網(wǎng)絡(luò)通信不僅僅是交互字符串那么簡(jiǎn)單。事實(shí)上網(wǎng)絡(luò)通信還可能會(huì)通過(guò)一個(gè)結(jié)構(gòu)

    2024年02月13日
    瀏覽(25)
  • 協(xié)議定制 + Json序列化反序列化

    協(xié)議定制 + Json序列化反序列化

    1.1 結(jié)構(gòu)化數(shù)據(jù) 協(xié)議是一種 “約定”,socket api的接口, 在讀寫數(shù)據(jù)時(shí),都是按 “字符串” 的方式來(lái)發(fā)送接收的。如果我們要傳輸一些\\\"結(jié)構(gòu)化的數(shù)據(jù)\\\" 怎么辦呢? 結(jié)構(gòu)化數(shù)據(jù): 比如我們?cè)赒Q聊天時(shí),并不是單純地只發(fā)送了消息本身,是把自己的頭像、昵稱、發(fā)送時(shí)間、消息本身

    2024年02月09日
    瀏覽(26)
  • iOS處理json,序列化和反序列化

    Mantle 是一個(gè)開源的 Objective-C 框架,用于在 iOS 和 macOS 應(yīng)用程序中實(shí)現(xiàn)模型層的序列化和反序列化。它提供了一種簡(jiǎn)單而強(qiáng)大的方式來(lái)將 JSON數(shù)據(jù)格式轉(zhuǎn)換為自定義的數(shù)據(jù)模型對(duì)象,以及將數(shù)據(jù)模型對(duì)象轉(zhuǎn)換為字典或 JSON 格式。 Mantle具有如下特點(diǎn) 自動(dòng)映射 Mantle自動(dòng)將 JSON 數(shù)據(jù)

    2024年02月11日
    瀏覽(25)
  • rust學(xué)習(xí)-json的序列化和反序列化

    由于 serde 庫(kù)默認(rèn)使用 JSON 格式進(jìn)行序列化和反序列化 因此程序?qū)⑹褂?JSON 格式對(duì)數(shù)據(jù)進(jìn)行序列化和反序列化 JSON:廣泛使用的 JavaScript 對(duì)象符號(hào),用于許多 HTTP API Postcard:no_std 和嵌入式系統(tǒng)友好的緊湊二進(jìn)制格式。 CBOR:用于小消息大小且無(wú)需版本協(xié)商的簡(jiǎn)潔二進(jìn)制對(duì)象表示

    2024年02月12日
    瀏覽(20)
  • 【探索Linux】P.30(序列化和反序列化 | JSON序列化庫(kù) [ C++ ] )

    【探索Linux】P.30(序列化和反序列化 | JSON序列化庫(kù) [ C++ ] )

    當(dāng)談到網(wǎng)絡(luò)編程時(shí),序列化和反序列化是非常重要的概念。在上一篇文章中,我們已經(jīng)了解了在Linux環(huán)境下實(shí)現(xiàn)簡(jiǎn)單的TCP網(wǎng)絡(luò)程序的基礎(chǔ)知識(shí)。本文將繼續(xù)探討序列化和反序列化,這些概念對(duì)于在網(wǎng)絡(luò)上傳輸數(shù)據(jù)以及跨網(wǎng)絡(luò)通信至關(guān)重要。通過(guò)深入了解序列化和反序列化,我

    2024年04月08日
    瀏覽(34)
  • 【網(wǎng)絡(luò)編程】協(xié)議定制+Json序列化與反序列化

    【網(wǎng)絡(luò)編程】協(xié)議定制+Json序列化與反序列化

    需要云服務(wù)器等云產(chǎn)品來(lái)學(xué)習(xí)Linux的同學(xué)可以移步/--騰訊云--/--阿里云--/--華為云--/官網(wǎng),輕量型云服務(wù)器低至112元/年,新用戶首次下單享超低折扣。 ? 目錄 一、序列化與反序列化的概念 二、自定義協(xié)議設(shè)計(jì)一個(gè)網(wǎng)絡(luò)計(jì)算器 2.1TCP協(xié)議,如何保證接收方收到了完整的報(bào)文呢?

    2024年02月06日
    瀏覽(25)
  • JSON序列化與反序列化NULL值丟失問(wèn)題

    做項(xiàng)目一般都會(huì)有一些特殊的需求,例如保留json中的null值,但是fastjson都會(huì)把null值得屬性給過(guò)濾掉 json序列化保留null值 json反序列化保留null值 使用hutool的Json工具時(shí)

    2024年02月15日
    瀏覽(37)
  • 使用nlohmann json庫(kù)進(jìn)行序列化與反序列化

    nlohmann源碼倉(cāng)庫(kù):https://github.com/nlohmann/json 使用方式:將其nlohmann文件夾加入,包含其頭文件json.hpp即可 demo

    2024年02月10日
    瀏覽(22)
  • 【網(wǎng)絡(luò)】協(xié)議的定制與Json序列化和反序列化

    【網(wǎng)絡(luò)】協(xié)議的定制與Json序列化和反序列化

    我們程序員寫的一個(gè)個(gè)解決我們實(shí)際問(wèn)題, 滿足我們?nèi)粘P枨蟮木W(wǎng)絡(luò)程序, 都是在應(yīng)用層 建立鏈接和斷開鏈接 基于TCP協(xié)議,我們需要知道寫代碼時(shí)對(duì)應(yīng)的接口大概在TCP通訊的過(guò)程中屬于什么樣的時(shí)間點(diǎn)角色,在TCP協(xié)議時(shí)詳談。三次握手,四次揮手 listen狀態(tài):準(zhǔn)備好了,可以進(jìn)

    2024年02月09日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包