我有一个login screen,我正在通过检查数据库中的凭据来验证用户。但是我如何实现Remember me check box呢?就像在gmail中一样,remember me(stay signed in)是存在的。我使用sign.jsp、Auth servlet (doPost)和oracle 10g ee进行身份验证。
发布于 2012-03-20 18:47:58
您可以使用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;
}
} Here是Cookie类的官方文档。
发布于 2012-03-20 18:52:56
您可以使用cookies来帮助实现。就像这样。
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);然后稍后对照特定值进行检查。
发布于 2017-04-13 22:05:15
我不知道它是否安全,但这就是我所做的。
在login.jsp head标签中
<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“而不是"login.jsp”
请评论这种方法是否是好的做法,任何其他修改都可以做。欢迎提出建议。
https://stackoverflow.com/questions/9785254
复制相似问题