我需要像在Gmail中一样实现验证码功能。 如果用户第一次请求,则不会显示验证码图像。 但是,如果用户请求第二次登录,(用户第一次输入了错误的密码)需要显示验证码。
请让我知道如何检查请求是否来自同一个用户,以便我可以在我的春季课程中实现一些业务逻辑。
答案 0 :(得分:1)
将计数器附加到HTTP会话。您可能需要在服务器端存储会话,并且在分布式ENV中,您应该跨服务器SYNC HTTP会话。您还可以将该信息存储到客户端cookie中。
答案 1 :(得分:1)
为什么要尝试将登录尝试绑定到具体用户?如果我是一个犯罪分子,我想猜密码,我会使用可以使用代理的强制执行器。
每次我都有新的IP,所以你的验证码对我不起作用。
在我看来,更好的解决方案是存储错误登录尝试的计数器。每当有人输入特定登录名的错误密码时,您都会增加此登录的计数器值。如果密码正确,则将此值设置为0.如果计数器值大于0,您将显示验证码。
答案 2 :(得分:0)
在服务器端(servlet)创建HttpSession
HttpSession session = request.getHttpSession();
并在此会话中保持点击次数
session.setAttribute("count",i); //you can use getAttribute() method to check the count.
答案 3 :(得分:0)
有几种方法可以做到这一点:
最后两个项目符号假设你想要在错误的密码上使用验证码而不是在不同的请求/页面重新加载。
上述每种方法都有其自身的优缺点。您需要根据需要选择一个或多个组合或多个组合。