java - 用户身份验证和用户帐户 - 基本编程技术

标签 java

我认为我的问题的答案是如此简单,以至于我的问题甚至没有答案哈哈:

用户身份验证/用户帐户的概念如何运作?例如,某个网页如何知道在登录时提取您的信息而不是其他人的信息?它真的只是一堆带有用户标识 where 子句的 select 语句来拉回信息吗?

最佳答案

当您连接到网站时, session cookie 会放置在您的浏览器中。这可以唯一标识您,以便网站从请求到请求、页面到页面都知道您是同一个人。在服务器的某个地方,存储了这个 session cookie 中的 ID。服务器知道你在那里。当您点击链接时,服务器知道您是生成该链接所在页面的同一个人。

当您登录时,程序员会根据数据库(或他用于用户身份验证的任何内容)验证您的用户名和密码,然后将某种用户 ID 存储在服务器上,并从您的 cookie 附加到您的 session ID。现在,每当您请求页面时,程序员都会检查服务器上是否有与您的 session ID 相关联的用户 ID,然后知道您已经登录。这很常见,当您登录时的第一件事in,因为有一堆选择语句来加载您的用户信息,任何新消息等。这样,它可以显示在页面顶部。

例如,在 StackOverflow 上,这将是您的姓名、声誉、徽章数量以及您是否有新消息。

网站永远不会混淆,因为 cookie 永远不会重复。每当有人在没有 cookie 的情况下访问该网站时,就会生成一个新值并在响应中发送给用户。然后,此后的每个请求,浏览器都会将 cookie 值一起发回。假设服务器没有使用 IP 地址来验证 session cookie,则不可能知道(而且几乎不可能猜测)任何其他用户的 cookie ID。无论如何,对于程序员来说,这一切都发生在“幕后”。程序员通常只是访问某种 session 数据存储库,他们可以在其中存储和检索跨页面加载有效的信息。只要用户不清除他的缓存或重新启动他的浏览器, session 数据将可用并且对该用户是唯一的。

关于java - 用户身份验证和用户帐户 - 基本编程技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3662438/

相关文章:

java - 为什么我的 ArrayList 没有用 JAXB 编码?

java - 简单的Java泛型问题

java - Maven:项目设置

java - 将 jar 从 war 中移除

java - java中如何获取上个月的日期和年份

java - 有什么理由不应该将我的 keystore 存储在版本控制中?

java - 为什么程序显示空结果?

java - 接受多个端口的 ServerSocket 连接

java - servlet显示雷达图

java - 在子类实例中看不到修改 protected 字段的值