Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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 记住我/保持登录,在jsp登录页面中_Java_Jsp_Servlets_Login_Remember Me - Fatal编程技术网

Java 记住我/保持登录,在jsp登录页面中

Java 记住我/保持登录,在jsp登录页面中,java,jsp,servlets,login,remember-me,Java,Jsp,Servlets,Login,Remember Me,我有一个登录屏幕,我想通过检查数据库中的凭据来验证用户。我知道大多数浏览器都能记住密码,但如何使用浏览器cookie实现“记住我”复选框?我正在使用sign.jsp和Auth servlet(doPost)以及https的基本访问身份验证 我知道我需要将userid+令牌存储到cookie中。我从另一个线程中找到以下代码 在servlet响应处理程序(doPost、doGet等)中,按以下方式创建cookie- if(remember_me_is_checked) { Cookie c

我有一个登录屏幕,我想通过检查数据库中的凭据来验证用户。我知道大多数浏览器都能记住密码,但如何使用浏览器cookie实现“记住我”复选框?我正在使用sign.jsp和Auth servlet(doPost)以及https的基本访问身份验证

我知道我需要将userid+令牌存储到cookie中。我从另一个线程中找到以下代码

在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[]cookies=request.getCookies();//请求是类型的实例
//HttpServletRequest
布尔值=false;
for(int i=0;i
我的问题是,在我将用户信息存储到cookie中之后,如何在用户下次登录时自动登录?我不明白的是,我只有用户的登录id存储在cookies中,没有密码我怎么能让用户登录。我可以用什么方法

如果可能,请解释或提供一些代码。我对这种东西真的很陌生


致以最诚挚的问候

仅在cookie中存储用户ID是不够的。我看到的最简单的解决方案是将某种密码散列与userid一起存储

取userid+some\u secret\u字符串+密码

从中计算哈希函数

将用户ID和计算的哈希推送到cookie

当用户返回时,您将得到2个字符串

根据用户ID,您将从数据库中获取密码

再次计算哈希函数

将计算出的哈希值与cookie中的哈希值进行比较


如果它们匹配-用户将再次登录

仅在cookie中存储userid是不够的。我看到的最简单的解决方案是将某种密码散列与userid一起存储

取userid+some\u secret\u字符串+密码

从中计算哈希函数

将用户ID和计算的哈希推送到cookie

当用户返回时,您将得到2个字符串

根据用户ID,您将从数据库中获取密码

再次计算哈希函数

将计算出的哈希值与cookie中的哈希值进行比较

如果它们匹配-用户将再次登录

通常,我们将令牌(一种状态信息)存储到cookie中,以确定是否作为用户登录。(不要在cookie中存储密码和其他凭证)

我建议您使用
过滤器
。在doFilter()方法中,读取cookie,并根据cookie的值或cookie的可用性,您可以对请求进行身份验证。

通常,我们将令牌(一种状态信息)存储到cookie中,以确定用户是否已登录。(不要在cookie中存储密码和其他凭证)


我建议您使用
过滤器
。在doFilter()方法中,读取cookie并根据cookie的值或cookie的可用性对请求进行身份验证。

您所说的“我不想通过检查数据库中的凭据对用户进行身份验证”是什么意思,如果用户名和/或密码与我数据库中的用户名和/或密码匹配,我可以使用什么方法登录用户。您所说的“我不想通过检查数据库中的凭据来验证用户”是什么意思?更具体地说,如果用户名和/或密码与我数据库中的用户名和/或密码匹配,我可以使用什么方法登录用户。您的建议非常好。但是,在成功进行身份验证之后,如何登录用户。我不储存他们的密码。我只存储用户ID和令牌、cookie的值或类似的东西,但不存储密码。我可以用什么方法自动登录。我正在使用基于容器的表单身份验证。我想,若我通过自动提交我在数据库中存储的用户ID和密码来存储他们的密码,我可以让他们签入。如果我不储存他们的密码,我该怎么办?你的建议很好。但是,在成功进行身份验证之后,如何登录用户。我不储存他们的密码。我只存储用户ID和令牌、cookie的值或类似的东西,但不存储密码。我可以用什么方法自动登录。我正在使用基于容器的表单身份验证。我想,若我通过自动提交我在数据库中存储的用户ID和密码来存储他们的密码,我可以让他们签入。如果我没有存储他们的密码,我该怎么办?