我正在考虑在数据库中添加一个单独的表(UserSessions),作为额外的保护层。我想在每个受保护的请求上检查此表,以确保JWT仍在表中,如果没有,则用户的JWT是没有意义的,他们将需要登录一个新的JWT。当用户注销时,他们的JWT将从该表中删除,并且JWT客户端也将被删除。
例如,如果用户尝试发出受保护的请求(例如在其帐户上下订单),则在发出订单请求时,他们的JWT将首先由服务器验证。然后,在那之后,我的数据库(UserSessions)将检查JWT是否存在。如果没有,则用户需要再次登录。
为什么要散列?我认为如果数据库遭到破坏,黑客无法对哈希的UserSessions(JWT)表做任何事情?他们是否不需要知道原始JWT才能冒充用户?在不知道签署JWT的秘密和哈希JWT的秘密的情况下,我认为这些哈希JWT列表对他们毫无意义吗?
可能值得注意的是,我的系统没有收到很多请求。它不像通讯应用程序中的高流量。我认为检查数据库的每个请求的性能影响值得吗?
我附上了一张图表,希望可以帮助说明。谢谢。所有意见都非常感谢。