繁体   English   中英

从ASP.NET到PHP的持久会话

[英]Persist Session from ASP.NET to PHP

我有一个ASP.NET登录表单,该表单在成功登录后会创建一个会话。它使用POST。

我想在PHP端检索此会话数据,但不确定如何实现。

会话名称为“ CUSTOMER_LOGGED_IN”。

我在PHP模板的标头中使用'session_start()'来持久化会话, 它确实做到了 ,但是我不确定如何在PHP模板中显示会话数据。

有人可以协助吗?

非常感谢您的指导。

正如thenetimp所提到的,您不能直接访问该会话。 Cookie或文件系统的替代方法是数据库,因为您不需要存储任何数据客户端,也不需要处理将文件读/写到文件系统中。

这个问题还有其他一些好的解决方案。

您错过了由服务器端语言实现会话的要点。 asp.net中的会话管理将与php实现不同。 您将需要设计一些共享会话数据的机制,可能通过身份验证cookie和共享的服务器端会话存储。

您将需要找到一种方法来告诉asp.net和php用户具有什么会话令牌。 理论上你会

  • 在asp.net上登录用户。 您可以使用内置在asp.net中的会话机制,也可以手动完成所有任务。 会话只是通过一些令牌绑定到客户端的数据存储。 因此,您的会话初始化将为您提供一些身份验证令牌,这些身份验证令牌需要在客户端以cookie的形式提供。
  • 使用会话ID为会话建立索引,将会话数据存储在php和asp.net实现都可以访问它的地方。
  • 将令牌传递回php实现(通过客户端cookie)
  • 手动或通过自定义php中的会话机制从共享会话存储中加载数据

我不得不承认这并不容易。 无论哪种方式,我认为共享这些信息都是一种努力。 我对php的了解比对asp.net的了解要多,但是这些概念可以翻译。 在php中,您可以使用session_set_save_handler()功能来覆盖会话的工作方式。 这将允许您从数据库中存储和检索会话,这对您的工作至关重要。

在共享主机上,出于安全目的,我经常将会话存储在数据库中。 理想情况下,如果可以避免的话,您不想在每个请求上都与远程数据库联系,这就是为什么我只将其用于很少用户的管理后端功能。 有一些关于如何实现此目标的教程,可以定制以使用不同的保存机制

看到:

http://www.devshed.com/c/a/PHP/Storing-PHP-Sessions-in-a-Database/

您可能还考虑在asp.net端对所需的所有会话数据进行加密,将这些数据作为cookie存储在客户端,然后让php通过解密加密的cookie来创建自己的会话。 您必须谨慎使用这些方法,并且对于php和asp.net访问来说,都应该通过https进行。

您根本没有提及任何有关域的信息。 如果要在远程位置上进行身份验证,则类似于CAS身份验证。

我希望这对您有所帮助,至少可以指出您的目标。 也许已经这样做的人将能够提供更具体的建议。

ASP和PHP stor会话不同,因此您不能直接访问它们。 您可以使用cookie加密会话数据并将cookie传递给php。

唯一的其他方法是,如果它们共享您将使用ASP写入文件系统然后使用PHP读取文件系统的文件系统,但是如果双方都需要写入相同的会话数据,则可能会变得混乱。 因此,我不建议您这样做。

最好的选择是proc会话,它将会话信息存储在ASP.NET和PHP都可以访问的外部存储(例如sql数据库)中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM