我正在寻找一个捆绑包或一种方法来计算用户的登录尝试 - (我使用 FosUserBundle(我正在尝试CCDN SecurityBundle,但它已经被弃用(需要Symfony 2.4(。
还有其他稳定的捆绑包或方法可以处理我的问题吗?
KEK的建议是根本不使用Symfony。 您可以覆盖安全配置中的failure_handler
并创建将调用的服务,然后获取用户并通过将其直接存储在会话或数据库中来增加其失败尝试次数。
使用此方法,您还需要覆盖登录成功处理程序,以便在用户成功登录时,您可以在您使用的会话或数据库中将其失败的登录尝试次数重置回 0。
快速简便
将其存储在带有时间戳和尝试次数的$_SESSION
中。每次登录失败后增加尝试次数,并在成功时将其清除。
更安全一点
为login_attempts
创建一个数据库表。它必须至少包含几列用于标识用户(例如ip_address
和user_agent
或其他任何用于确定其唯一性的列(和一列用于登录尝试次数 (int(。
每次用户尝试登录时,请增加amount_login_attempts
。成功登录后,将计数器重置为 0。
旁注
- 如果失败尝试次数超过 X 次,则临时阻止用户
- 不要延迟失败的登录
sleep()
因为这会占用服务器资源