请记住我在jsp登录页面

时间:2012-03-20 10:44:33

标签: java jsp servlets login remember-me

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

4 个答案:

答案 0 :(得分:6)

您可以将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;
    }
}  

HereCookie类的官方文档。

答案 1 :(得分:0)

您可以使用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);

然后检查特定值。

答案 2 :(得分:-1)

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

在login.jsp头标记

<script type="text/javascript">
var isLoggedIn = "${isLoggedIn}";
if(isLoggedIn === true)
 window.location.href="Home.jsp";
</script>

在body标签中我添加了一个“记住我”的复选框,如下所示

<input type="checkbox" id="RememberMe" name="rememberMe">
<label for="RememberMe">Remember Me</label>

在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”而不是“登录”的.jsp“

请评论此方法是否良好实践,可以进行任何其他修改。 欢迎提出建议。

答案 3 :(得分:-2)

查看Spring SecurityIt

它是一个功能强大且可高度自定义的身份验证和访问控制框架。

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