Java-Web应用程序中的Cookies和会话

Java-Web应用程序中的Cookies和会话,java,session,authentication,cookies,Java,Session,Authentication,Cookies,我在理解java web应用程序中的Cookie、会话和身份验证方面有点问题 基本上,我有一个身份验证类,我的servlet为该对象提供请求对象,它负责根据用户是否登录返回true或false 因此,每次用户登录时,我都会创建一个大的随机字符串,并将其作为response.cookie的值以及会话对象的属性,对吗?当该用户发出另一个请求时,我会将他刚刚发送给我的cookie与他会话的cookie进行比较,看看是否相同,然后他将被验证,对吗 也许我在这里说错了,这就是为什么我希望有人解释我,如果用

我在理解java web应用程序中的Cookie、会话和身份验证方面有点问题

基本上,我有一个身份验证类,我的servlet为该对象提供请求对象,它负责根据用户是否登录返回true或false

因此,每次用户登录时,我都会创建一个大的随机字符串,并将其作为response.cookie的值以及会话对象的属性,对吗?当该用户发出另一个请求时,我会将他刚刚发送给我的cookie与他会话的cookie进行比较,看看是否相同,然后他将被验证,对吗

也许我在这里说错了,这就是为什么我希望有人解释我,如果用户的身份验证是上述过程,或者我错了


谢谢

一个简单的方法是在用户经过身份验证时在会话(或用户对象本身)中设置一个标志。您不必对cookie做任何事情-让容器使用cookie管理维护您的会话。你只关心课程本身

为了提高效率,您可以对代码进行优化,以便在用户登录之前不创建会话。但是,您可能无法存储尚未登录的用户的其他信息(如购物车内容)。节省的少量内存不值得额外的麻烦


我建议使用一个框架——JAAS太抽象/复杂了。使用类似于

的方法,或者使用一个安全框架(比如JAAS)来处理它,或者将数据存储在会话中。将其存储在cookie中是非常不安全的,并且容易受到一系列攻击。看到这个了吗


Cookie存储在客户端,会话在服务器中管理,因此更安全。使用JAAS或其他框架将为您提供更复杂的身份验证/授权选项。

就这样?只是一面旗帜?不是饼干?安全吗?那么,这种方法最适合让用户保持登录状态?是的。应用服务器将向cookie写入会话id,并使用该id将正确的会话实例与处理用户http请求的线程相关联。会话数据不能被最终用户篡改,但cookie确实可以。会话仅保留在服务器上。它从未发送到客户端。我不允许使用框架。那么,会话对象中是否可以有一个布尔变量,它将在每个请求中告诉我用户是否已登录?这是好技术吗?