在PHP和ASP.Net之间传递会话或身份验证状态

时间:2009-06-08 10:50:42

标签: php asp.net session-state

我们有一个当前(遗留)基于PHP的网站,不太可能在明年左右重新开发,作为我们的主要门户网站。

我们希望在ASP.Net中开发新的应用程序,并将它们插入当前的门户网站 - 但我们不希望我们的网站用户必须登录两次。

在两个平台之间共享身份验证状态的最佳方式是什么?它们不共享相同的服务器,数据库后端甚至代理。

3 个答案:

答案 0 :(得分:1)

阅读Microsoft关于在经典ASP和ASP.NET之间共享会话状态的文章:

http://msdn.microsoft.com/en-us/library/aa479313.aspx

从概念上讲,我认为这与您尝试做的非常相似,但我不知道上述文档对您的具体案例有多大帮助。绝对值得一看。

答案 1 :(得分:0)

我猜你最好的选择是一个单独的数据库或内存支持服务器来处理会话状态。您可以使用ASP.NET内置的基于SQL Server的会话状态,并手动将其连接到PHP或使用自定义解决方案。

答案 2 :(得分:0)

对于一个相当大的项目,我需要一段时间。这些语言是ASP.Net和ASP,但如果它是PHP而不是ASP,那么我最终得到的方法也会起作用。

你能抽象出你的PHP应用程序修改会话变量吗?

我发现即使对于大型Web应用程序,也只有少数地方会话变量被更新。例如; 登录退出,一些寻求更改群组操作等等。对我来说,只需要修改的脚本少于6个。< / p>

对于修改会话变量的每个脚本,将服务器重定向添加到新的ASP.Net脚本。因此,PHP脚本将完成所有必须做的事情,最后的事情将是PHP重定向(mabye PHP Header(“Location:...”)最后调用。

您收到的ASP.Net脚本会以与PHP脚本更新其会话相同的方式更新ASP.Net会话变量。幸运的是,在我的情况下,原始脚本没有输出任何数据,而是重定向到“成功”页面。

即。原始脚本是MVC设计中的 Controller 代码,它们重定向到 View 代码。这使我能够在ASP控制器和视图脚本之间整齐地插入我的ASP.Net脚本。如果您的接收脚本输出数据,则您必须将其拆分为2页。

就是这样。实际上,对Login,Logout和几个页面执行此操作有效地导致两个会话范围保持同步。