首页 > 解决方案 > 我想在登录时记录加密的用户 ID

问题描述

我正在使用 getXxx() 方法在我的项目中记录用户 ID。logger.info("printing user id"+user.getUserId()); 现在出于安全目的,我无法将 userId 记录为纯文本,我需要对其进行加密。同时,我无法更改 getXxx() 方法中的逻辑,因为我将其用作我的业务逻辑的一部分。我想要,只有当我登录时,只有用户 ID 被加密。

我怎样才能做到这一点?

标签: java

解决方案


我认为您不能记录 userIds 的事实,理论上这不会暴露任何用户个人信息,如果没有指向用户个人数据(例如(姓名、姓氏、电话号码...))的链接,该 ID 毫无价值应该找到那种感觉,在那里有 userId。如果你绝对不能这样做,你可能会做类似的事情:

1) 打印请求的 traceId,以便您可以将多行代码与您的用例关联起来,为此您可以使用 MDC 上下文,这样您就不需要在每次记录某些内容时都执行此操作。

2) 使用加密方法 defaultEncrypt(user.getUserId()) 包装您的 getUserId

3) 将另一个 getter 添加到您的域对象以执行类似 user.getEncryptUserId() 之类的操作,它在下面执行此操作。如果使用 kotlin,您可以添加一个扩展函数来执行类似 String.encrypt() 的操作,然后执行 user.getUserId().encrypt()


推荐阅读