我有一个用户结构,其中包含密码等敏感字段:
type User struct {
UID string `json:"uid" binding:"required"`
Password string `json:"password" binding:"required"`
EmailAddress string `json:"email" binding:"required"`
}
现在我希望能够使用这个结构来注册用户并更新、删除,还可以查看。我不希望密码被序列化以供查看。当然,我可以制作一个自定义编组器,但这是唯一的方法吗?我尝试使用json:"-"
选项,但这会导致它在解组时被忽略,这是我不想要的。有没有更好的办法?
EDIT:当然,为了让你们中的一些人放心,我不会以明文形式存储密码。它是密码的 bcrypt 哈希值,但仍然如此。我不希望在搜索用户时返回它。
我想说,如果您想要自定义封送处理,那么实现 json.Marshaler 是一个优雅的解决方案。在这种情况下非常简单:
func (u User) MarshalJSON() ([]byte, error) {
type user User // prevent recursion
x := user(u)
x.Password = ""
return json.Marshal(x)
}
如果您在编组时根本不需要密码字段,请在您的用户类型中添加“omitempty”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)