对于我当前的Web项目,我需要将短期访问令牌存储在PostgreSQL表中。我有两个选择实施令牌到期的选择:
-
对用户进行身份验证时,请确保令牌未过期,例如通过执行
SELECT * FROM access_token WHERE key = '...' AND CURTIME() < expires_at;
。删除大块在与cron
的Web应用程序中独立于大块中的令牌或类似的内容。PROS:更快的身份验证,总的查询较少。
cons:需要调度程序或外部工具,因此一个更复杂的项目。
-
在每个身份验证之前,运行
DELETE FROM access_token WHERE CURTIME() >= expires_at;
。然后SELECT
令牌,前提是它仍然存在。PROS:更简单,更易于实现,累积了较少过期的令牌。
cons:更多查询,可能对单个用户进行更长的身份验证(例如,停机后的第一个用户(。
还有其他解决方案吗?哪一个被认为是最佳实践?
当您谈论最佳实践时,重要的是首先考虑您已经说过的权衡,但是第一个选择是适当的
但是,这就是我接近情况的方式
认证用户检查令牌是否过期,则可以自动删除已过期令牌的触发器。这就是我要处理情况的方式,这就是我看到的情况。这似乎很复杂,但最后您会收获回报。
再次,其他人可能有不同的看法,这只是我的2美分。