Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为我的登录页面创建会话并计算登录失败的次数_Java_Session_Servlets_Login_Logout - Fatal编程技术网

Java 为我的登录页面创建会话并计算登录失败的次数

Java 为我的登录页面创建会话并计算登录失败的次数,java,session,servlets,login,logout,Java,Session,Servlets,Login,Logout,这个很好用。现在,我想在用户登录后创建一个会话,并在尝试登录失败次数为3次时重定向到安全问题。我该怎么做 如何创建用户登录和注销会话?如何计算登录尝试次数? 首先,您需要一个会话变量来存储登录尝试。所以doGet()的第一行必须是这样的: // Do not create session if it doesn't exist HttpSession session = request.getSession(false); int loginAttempts=0; try{ loginAt

这个很好用。现在,我想在用户登录后创建一个会话,并在尝试登录失败次数为3次时重定向到安全问题。我该怎么做

如何创建用户登录和注销会话?如何计算登录尝试次数?


首先,您需要一个会话变量来存储登录尝试。所以doGet()的第一行必须是这样的:

// Do not create session if it doesn't exist
HttpSession session = request.getSession(false);
int loginAttempts=0;
try{
  loginAttempts = Integer.parseInt(session.getAttribute("LOGIN_ATTEMPTS").toString());
  loginAttempts++; //if code comes here then the user has already made a login attempt and therefore icrease the counter
}catch(Exception ex){
  //if error then that means that the user has never made a login attempt because the attribute was not found
  session.setAttribute("LOGIN_ATTEMPTS",1);
}

然后,在验证用户凭据后,您应该查看登录尝试计数器是否等于一个数字,并将请求适当地转发到所需的视图。

首先,您需要一个会话变量来存储登录尝试。所以doGet()的第一行必须是这样的:

// Do not create session if it doesn't exist
HttpSession session = request.getSession(false);
int loginAttempts=0;
try{
  loginAttempts = Integer.parseInt(session.getAttribute("LOGIN_ATTEMPTS").toString());
  loginAttempts++; //if code comes here then the user has already made a login attempt and therefore icrease the counter
}catch(Exception ex){
  //if error then that means that the user has never made a login attempt because the attribute was not found
  session.setAttribute("LOGIN_ATTEMPTS",1);
}

然后,在验证用户凭据后,您应该查看登录尝试次数计数器是否等于一个数字,并将请求适当地转发到您想要的视图。

您需要将登录尝试次数放入会话属性中。正如我所说的,在会话中,我不知道或你几乎不知道!作为一个额外的有用的阅读:你需要把登录尝试的次数放在会话属性中。正如我说的,我不知道或者你几乎什么都不能说abt会话!作为一个额外的有用的阅读:那么对于不同的登录凭证,它不会增加相同的计数吗?如果用户1第一次尝试,用户2第二次尝试,则计数将为2?@APPUcool否,不会为2<代码>登录尝试被声明为局部变量。对于每个方法调用,如果声明了上述代码和平,将再次创建
loginatests
,并将其初始化为0。同样,它不是静态变量(在Java中,局部变量无论如何也不能是静态的),所以它不会保留它以前的值。局部变量是在输入方法、构造函数或块时创建的,一旦退出方法、构造函数或块,该变量将被销毁。阅读这里:是的,但如果我在doget中给出上述代码,它不会将会话识别为dopost中的属性,如果我尝试在dopost中编写这段代码,则登录尝试id始终等于1。。。由于每次我尝试(再次)登录时都调用servlet,因此每次登录尝试设置为1,每次都创建一个新会话:(您始终可以按照上面所示从请求对象获取会话grom,那么它是否会为不同的登录凭据增加相同的计数?如果用户1第一次尝试,用户2第二次尝试,那么计数将为2?@APPUcool否,它不会为2。
loginatests
被声明为局部变量。对于每个方法调用,abo声明了代码的和平,将再次创建
loginatests
,并将其初始化为0。同样,它不是静态变量(在Java中,局部变量无论如何也不能是静态的),因此它不会保留以前的值。当输入方法、构造函数或块时,会创建局部变量,并且一旦退出方法、构造函数或块,该变量将被销毁。请阅读此处:是,但如果我在doget中给出上述代码,则不会将会话识别为dopost中的属性,如果我尝试编写这段co在dopost中,登录尝试id始终等于1…因为每次我尝试登录(再次)时都会调用servlet,所以每次登录尝试都被设置为1,并且每次都会创建一个新会话:(您始终可以从请求对象中获取会话,如上所示