Java 如何将用户转发到;重置密码“;如果用户尝试使用无效用户名登录超过3次,则返回页面(&A);密码(STRUTS2)
我想实施: 如果用户尝试使用无效用户名和密码登录超过3次。我想把它们转发到我的“重置密码页面” 这背后的逻辑是什么。我无法理解这个问题的确切逻辑。请帮忙 我想申请的是: 将我的表单文本字段中的默认值作为我的表单中的Java 如何将用户转发到;重置密码“;如果用户尝试使用无效用户名登录超过3次,则返回页面(&A);密码(STRUTS2),java,struts2,interceptor,Java,Struts2,Interceptor,我想实施: 如果用户尝试使用无效用户名和密码登录超过3次。我想把它们转发到我的“重置密码页面” 这背后的逻辑是什么。我无法理解这个问题的确切逻辑。请帮忙 我想申请的是: 将我的表单文本字段中的默认值作为我的表单中的Login\u trunt=1传递 //geter & setter of loginAttempt if(loginAttempt>3) { return resetPassword;//forwarding to resetPassword.jsp from
Login\u trunt=1
传递
//geter & setter of loginAttempt
if(loginAttempt>3)
{
return resetPassword;//forwarding to resetPassword.jsp from my struts.xml
}
else
{
//perform other tasks
}
但是从我上面的逻辑来看,我有一个疑问:如何在每次表单提交时增加loginatetest
值。因此,我的上述代码将为我工作
如果您有任何其他逻辑要实现。请与我分享。按照您的意愿这样做将成为一个安全漏洞,因为尝试次数将是html的一部分,因此任何人都可以更改它(您不需要特殊工具,您可以使用chrome开发工具等工具)。因此,有了这一点,一些恶意用户可能会让程序无限次尝试暴力攻击 为避免此安全漏洞,您可以使用以下方法之一:
- 存储会话中的尝试次数。在我看来,这是使用Struts2作为框架的最简单的方法。 要在Struts2操作中获得会话,您应该实现接口。 另外,当用户成功登录后,不要忘记重置尝试值
- 一些开发人员不喜欢使用会话,所以他们使用数据库。就性能而言,这是一种比会话更好的方法,特别是当您的网站拥有大量用户时
- 另一种选择是在表单中使用cookie甚至隐藏参数,但对其信息进行加密(第一种是RubyonRails框架的aproach)
当然有更多的解决方案,但我想我已经介绍了最常见的解决方案。按照您的意愿这样做会成为一个安全漏洞,因为尝试的次数是html的一部分,所以任何人都可以更改它(您不需要特殊的工具,您可以使用chrome开发工具来实现)。因此,有了这一点,一些恶意用户可能会让程序无限次尝试暴力攻击 为避免此安全漏洞,您可以使用以下方法之一:
- 存储会话中的尝试次数。在我看来,这是使用Struts2作为框架的最简单的方法。 要在Struts2操作中获得会话,您应该实现接口。 另外,当用户成功登录后,不要忘记重置尝试值
- 一些开发人员不喜欢使用会话,所以他们使用数据库。就性能而言,这是一种比会话更好的方法,特别是当您的网站拥有大量用户时
- 另一种选择是在表单中使用cookie甚至隐藏参数,但对其信息进行加密(第一种是RubyonRails框架的aproach)
当然,还有很多解决方案,但我想我已经介绍了最常见的。要大致回答您的新问题,完全未经测试:
公共类登录{
//省略了getter、setter、密码检查、utils等。
公共字符串execute(){
返回到多个尝试(密码)?重置\u密码:成功;
}
公共布尔值ToomAnyAttents(字符串密码){
整数尝试次数=默认值(session.get(LOGIN\u尝试次数),0);
尝试次数=密码正确()?0:尝试次数+1;
session.put(登录尝试、尝试);
返回次数>3次;
}
}
您的代码有点难读。要大致回答您的新问题,完全未经测试:
公共类登录{
//省略了getter、setter、密码检查、utils等。
公共字符串execute(){
返回到多个尝试(密码)?重置\u密码:成功;
}
公共布尔值ToomAnyAttents(字符串密码){
整数尝试次数=默认值(session.get(LOGIN\u尝试次数),0);
尝试次数=密码正确()?0:尝试次数+1;
session.put(登录尝试、尝试);
返回次数>3次;
}
}
您的代码有点难读。谢谢,但我现在确实想使用seision来实现此目的,它将不会作为参数传递。我将在我的动作类中创建getter和setter。并且它不会显示在用户浏览器中。所以它不会成为一个安全漏洞。它将是html的一部分,所以任何人都可以更改它(你不需要特殊的工具,你可以用chrome开发工具来实现)。因此,考虑到这一点,一些恶意用户可能会制作一个程序来