记住我在jsp登录页面

我有一个login screen ,我通过检查数据库中的凭据来validation用户。 但是我如何实现Remember me check box ? 喜欢在gmail中remember me(stay signed in)存在。 我使用sign.jspAuth servlet (doPost)oracle 10g ee进行身份validation。

您可以将cookies用于此目的。

在您的servlet响应处理程序(doPost,doGet等)中,以下列方式创建cookie –

 if(remember_me_is_checked) { Cookie c = new Cookie("userid", userId.toString()); c.setMaxAge(24*60*60); response.addCookie(c); // response is an instance of type HttpServletReponse } 

要阅读它们,你可以使用这样的东西 –

 Cookie[] cookies = request.getCookies(); // request is an instance of type //HttpServletRequest boolean foundCookie = false; for(int i = 0; i < cookies.length; i++) { Cookie c = cookies[i]; if (c.getName().equals("userid")) { string userId= c.getValue(); foundCookie = true; } } 

这是Cookie类的官方文档。

您可以使用cookie来帮助实施。 像这样的东西。

 String userIdendificationKey="UserName"; Cookie cookie = new Cookie ("userIdendificationKey",userIdendificationKey); // Set the age of the cokkie cookie.setMaxAge(365 * 24 * 60 * 60); //Then add the cookies to the response response.addCookie(cookie); 

然后检查特定值。

我不知道它是否安全,但这就是我所做的。

在login.jsp头标记中

  

在body标签中我添加了一个Remember Me复选框,如下所示

   

在servlet doPost方法中,我添加了下面的代码

 if(userdetails are verified) { if(request.getParameter("rememberMe")!=null){ request.getSession().setAttribute("isLoggedIn", true); } RequestDispatcher rs = request.getRequestDispatcher("Home.jsp"); rs.forward(request, response); } else { RequestDispatcher rs = request.getRequestDispatcher("fail.jsp"); rs.include(request, response); } 

使用它会在第一次登录时要求提供凭据,它会将登录信息存储在会话参数中,如果你第二次尝试访问该站点它会自动转到“Home.jsp”而不是“login.jsp”

请评论这种方法是否是一种好的做法,可以做任何其他修改。 欢迎提出建议。

看看Spring SecurityIt

它是一个function强大且高度可定制的身份validation和访问控制框架。

您还可以查看Rose India的代码,这对您更有帮助。