php - 检查登录用户的帐户是否仍然匹配或存在于数据库中的最佳解决方案是什么?
问题描述
如果每次登录用户刷新或重新进入站点时,它会在不牺牲站点性能的情况下从数据库中检查该帐户是否仍然存在或从数据库中匹配,这是一个好习惯吗?
我想要做的是,对于登录用户所做的每一项活动(甚至导航具有身份验证的页面),如果凭据(例如用户名和密码)仍然与数据库匹配,它将重新验证帐户。解决此类问题的最佳解决方案是什么?
解决方案
设置一个会话并在每个相关页面中检查它。如果需要设置超时,并且如果登录对时间敏感,例如银行在 X 分钟(通常 5 或 10 分钟)内不活动将您注销,那么您将需要持久性,如 DB 表或其他类似 Redis 的地方,您可以更轻松地管理用户使用活动时间戳等登录。
关于何时关闭帐户,此操作无论如何都应该刷新会话,因此注销或帐户关闭操作将调用相同的事情,因为它们不再登录。
然后,如果他们碰到了一些非常敏感的东西,您可以再次询问他们的密码并创建一个新的会话密钥。就像在亚马逊中一样,即使在一段时间不活动之后,您也可以查看帐户中的某些内容,但有些内容需要密码确认,例如查看个人数据等。
如果站点的性能是一个问题,那么这可能不是瓶颈。数据库查询和会话验证是无法避免的基本要求。
如果这样的事情明显很慢,请查看更好的代码(或适合的框架)或缓存(如果您还没有)。
推荐阅读
- sql - 从 SQL 中的特定月份提取条目
- node.js - 识别第一个用户登录 (Node.js/JWT)
- heroku - 如何将 Redis rdb 文件导入 Heroku
- python - Python pygame.midi.Input.read() 的返回类型格式
- c# - 用于多个文件的 Sha256、sha512
- python - Opencv,更新“第一”帧
- python - concurrent.futures.as_completed 是否会为已取消的期货产生收益?
- typescript - Typescript - 绑定元素“类型”隐式具有“任何”类型
- postgresql - 在一个查询中选择日期和所有时间之间的计数 Postgres DB
- python - For 循环未执行(每次列表中出现“11”时尝试更改变量) BLACKJACK