网站如何让您保持登录状态

新手上路,请多包涵

快速提问:当您在一个网站上登录您的帐户时,它会做什么来让您保持登录状态,这样当您访问另一个页面时就不会一次又一次地登录?

原文由 user7339340 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 527
2 个回答

这都是关于会议的。

资源

在计算机科学,特别是网络中,会话是一种半永久性的交互信息交换,也称为对话、对话或会议,在两个或多个通信设备之间,或计算机与用户 Web 服务器会话管理.. . 超文本传输协议 (HTTP) 是无状态的:运行 Web 浏览器的客户端计算机必须通过每个新的 HTTP GET 或 POST 请求建立到 Web 服务器的新传输控制协议 (TCP) 网络连接。因此,Web 服务器依赖已建立的 TCP 网络连接的时间不能超过单个 HTTP GET 或 POST 操作。会话管理是 Web 开发人员用来使无状态 HTTP 协议支持会话状态的技术。例如,一旦用户通过 Web 服务器的身份验证,用户的下一个 HTTP 请求(GET 或 POST)不应导致 Web 服务器再次询问用户的帐户和密码。有关用于完成此操作的方法的讨论,请参阅 HTTP cookie 和会话 ID

在多个 Web 服务器必须共享会话状态知识的情况下(在集群环境中很典型),会话信息必须在运行 Web 服务器软件的集群节点之间共享。在集群中的节点之间共享会话状态的方法包括:向成员节点多播会话信息(有关此技术的一个示例,请参阅 JGroups),使用分布式共享内存或内存虚拟化与伙伴节点共享会话信息,使用分布式共享内存或内存虚拟化在节点之间共享会话信息网络套接字,将会话信息存储在分布式文件系统或全局文件系统等共享文件系统上,或者将会话信息存储在集群外部的数据库中。

如果会话信息被认为是短暂的、易变的数据,这些数据不是不可否认交易所必需的,并且不包含受合规性审计约束的数据,则可以使用任何存储会话信息的方法。但是,如果会话信息受审计合规性约束,则应考虑用于会话存储、复制和集群的方法。

在面向服务的体系结构中,消费者应用程序可以使用简单对象访问协议或使用可扩展标记语言 (XML) 消息构造的 SOAP 消息来促使 Web 服务器创建会话。

在原始 php 中(大多数知名框架都有会话管理中间件,所以你不必担心)如果你想管理一个会话,你必须包括

session_start();

页面顶部的程序。执行此操作时,您将创建一个 24 分钟(1440 秒)的会话( 默认情况下)。

您可以将其修改为 php.ini 文件中的任何整数。

php 中的所有会话数据存储在 $_SESSION 全局。因此,它是一个数组,因此您可以设置会话变量(任何您想要的),例如,

 $_SESSION['user_name'] = 'ernesto';
$_SESSION['foo'] = 'bar';
...

在你的应用程序的任何时候,你都可以删除 $_SESSION 变量,

 session_unset();

假设,你已经在上面设置了变量,

 print_r($_SESSION);

将打印空数组,因为您已通过未设置的过程删除了变量。

如果你想完全破坏一个会话,

 session_destroy();

会为你做的。

原文由 marmeladze 发布,翻译遵循 CC BY-SA 3.0 许可协议

Cookie 和 Session 是将身份验证详细信息存储在浏览器中的一些传统方式。然而,通过这些方法,服务器必须跟踪登录用户及其 cookie 以进行验证。所以在管理登录用户时有一些服务器操作。

然而,有一种称为 JSON Web Token 又名 JWT 的新方法。这里服务器将生成一个用户特定的令牌并在登录时发送到浏览器客户端。浏览器会将此令牌存储在 HTML5 本地存储或会话存储中,并将随每个请求发送此令牌!

因此,对于每次刷新,浏览器代码都可以在本地存储或会话存储中检查此令牌的可用性。这种方法的优点是服务器不必跟踪发出的令牌,并且能够在需要时从令牌中提取数据。

此 JWT 广泛用于验证使用高级 Javascript 框架开发的 Web 应用程序:Angularjs 或 Reactjs(带有支持库)

原文由 udarabibile 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题