簡體   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