java - 我想在登录时记录加密的用户 ID
问题描述
我正在使用 getXxx() 方法在我的项目中记录用户 ID。logger.info("printing user id"+user.getUserId());
现在出于安全目的,我无法将 userId 记录为纯文本,我需要对其进行加密。同时,我无法更改 getXxx() 方法中的逻辑,因为我将其用作我的业务逻辑的一部分。我想要,只有当我登录时,只有用户 ID 被加密。
我怎样才能做到这一点?
解决方案
我认为您不能记录 userIds 的事实,理论上这不会暴露任何用户个人信息,如果没有指向用户个人数据(例如(姓名、姓氏、电话号码...))的链接,该 ID 毫无价值应该找到那种感觉,在那里有 userId。如果你绝对不能这样做,你可能会做类似的事情:
1) 打印请求的 traceId,以便您可以将多行代码与您的用例关联起来,为此您可以使用 MDC 上下文,这样您就不需要在每次记录某些内容时都执行此操作。
2) 使用加密方法 defaultEncrypt(user.getUserId()) 包装您的 getUserId
3) 将另一个 getter 添加到您的域对象以执行类似 user.getEncryptUserId() 之类的操作,它在下面执行此操作。如果使用 kotlin,您可以添加一个扩展函数来执行类似 String.encrypt() 的操作,然后执行 user.getUserId().encrypt()
推荐阅读
- go - 我有一个公钥和一个 JWT,如何检查它在 Go 中是否有效?
- javascript - 我使用一位茉莉记者后显示“未找到规格”
- c# - 如何对一个集合进行分组并将相同的分组应用于其他相同长度的集合?
- java - Kafka反序列化嵌套的泛型类型
- python - 如何为 python eve 应用程序动态更新 mongo_prefix
- html - 使用带有语义标记的 CSS 框架
- php - 在foreach中访问带有空格的JSON键
- azure - 为什么 Azure AD Graph API 可能仍然适用于 Microsoft Graph API
- ios - 如何在swift 4中绘制半(半)圆并将其设置为特定角度?
- android - java.lang.IllegalArgumentException:在 bjata