快速提问:当您在网站上登录自己的帐户时,如何保持登录状态,以便在您访问其他网页时不会再次登录?
答案 0 :(得分:2)
Html页面是无状态的,这意味着当您刷新页面时,之前来自服务器的所有数据都已消失,必须再次请求。
有不同的方式在浏览器中存储数据,即apply
。
当您第一次登录时,该页面会将您的登录名init.tcl
存储在浏览器中,因此当您更改页面或刷新时,该页面会尝试使用Cookies
登录,如果存在!否则,您必须再次输入登录数据!
您只需清除浏览器缓存即可对此进行测试。
答案 1 :(得分:1)
关于会话。
在计算机科学,尤其是网络中,会话就是一个 半永久性互动信息交换,也称为 两个或更多之间的对话,对话或会议 通信设备,或计算机和用户之间 Web服务器会话管理 ... 超文本传输协议(HTTP)是无状态的:客户端计算机 运行Web浏览器必须建立新的传输控制 每个新HTTP与Web服务器的协议(TCP)网络连接 GET或POST请求。因此,Web服务器不能依赖于 建立TCP网络连接的时间超过单个HTTP GET 或POST操作。会话管理是Web使用的技术 开发人员使无状态HTTP协议支持会话状态。 例如,一旦用户已经过Web服务器的身份验证,就可以了 用户的下一个HTTP请求(GET或POST)不应该导致Web服务器 再次询问用户的帐户和密码。讨论 用于完成此操作的方法请参阅HTTP cookie和会话ID
在多个Web服务器必须共享知识的情况下 会话状态(在群集环境中是典型的)会话 必须在正在运行的群集节点之间共享信息 网络服务器软件。在节点之间共享会话状态的方法 集群中包括:向成员节点多播会话信息 (有关此技术的一个示例,请参阅JGroups),共享会话 使用分布式共享内存或伙伴节点的信息 内存虚拟化,使用节点之间共享会话信息 网络套接字,在共享文件系统上存储会话信息 例如分布式文件系统或全局文件系统,或存储 数据库中集群外的会话信息。
如果会话信息被视为瞬态,则表示易失性数据 不要求不可否认交易且不包含 受合规性审计的数据,然后是存储会话信息的任何方法 可以使用。但是,如果会话信息需要审核 合规性,应考虑所用的方法 会话存储,复制和群集。
在面向服务的体系结构中,简单对象访问协议或 使用可扩展标记语言(XML)构造的SOAP消息 消费者应用程序可以使用消息来导致Web服务器 创建会话。
在原始php(大多数众所周知的框架都有会话管理中间件,所以你不应该担心它)如果你想管理一个会话,你必须包括
session_start();
页面顶部的程序。执行此操作时,您将创建一个24分钟(1440秒)的会话(by default)。
您可以将其修改为php.ini文件中的任何整数。
php中存储在$_SESSION
全局的所有会话数据。因此,它是一个数组,因此您可以设置会话变量(您想要的任何东西),例如
$_SESSION['user_name'] = 'ernesto';
$_SESSION['foo'] = 'bar';
...
在您申请的任何时候,您都可以删除$ _SESSION变量
session_unset();
假设您已经在上面设置了变量,
print_r($_SESSION);
将打印空数组,因为您已通过取消设置过程删除了变量。
如果你想彻底摧毁一个会话,
session_destroy();
会为你做的。
答案 2 :(得分:1)
Cookie和会话是验证详细信息存储在浏览器中的一些传统方式。但是,通过这些方法,服务器必须跟踪已登录的用户及其cookie以进行验证。因此,在管理登录用户时有一些服务器操作。
然而,有一种称为JSON Web Token又名JWT的新方法。这里服务器将生成一个用户特定的令牌,并在记录时发送到浏览器客户端。浏览器会将此令牌存储在HTML5本地存储或会话存储中,并将在每次请求时发送此令牌!
因此,每个刷新浏览器代码都可以在本地存储或会话存储中检查此令牌的可用性。这种方法的优点是服务器不必跟踪已发布的令牌,并且能够在需要时从令牌中提取数据。
本JWT广泛用于验证使用高级Javascript框架开发的Web应用程序:Angularjs或Reactjs(带支持库)
答案 3 :(得分:-1)