[golang] json序列化時自動將id加密

對於有規則的數據索引,好比用戶ID,商品ID,訂單編號,很容易第三方直接遍歷抓取資源。採用liamylian/json-hashids進行加密,能夠有效避免這類狀況發生。但由於是對等加密,需注意該加密算法並不安全,使用時需注意場景,詳情請見hashidsgit

package main

import(
    "fmt"
    "github.com/liamylian/json-hashids"
    "time"
)

var json = jsonhashids.NewConfigWithHashIDs("abcdefg", 10)

type Book struct {
    Id    int    `json:"id" hashids:"true"` // 這裏要給id打上hashids的tag
    Name  string `json:"name"`
}

func main() {
    book := Book {
        Id:          1,
        Name:        "Jane Eyre",
    }
    
    bytes, _ := json.Marshal(book)
    
    // 輸出: {"id":"gYEL5rKBnd","name":"Jane Eyre"}
    fmt.Printf("%s", bytes)
}
相關文章
相關標籤/搜索