2011-12-28 117 views
1

我們有一個現有的通過PHP運行的用戶許可服務器。它允許創建用戶,檢查提供的用戶名和密碼是否有效,並更新用戶。使用現有服務器的ASP.Net自定義身份驗證

我們正在創建一個新的ASP.Net網站,並希望它使用這個現有的用戶PHP腳本/數據庫來限制訪問部分ASP.Net網站。還有一些Web服務通過基本身份驗證使用相同的登錄名和密碼,我們還需要從ASP.Net服務器訪問該服務。

我正在尋找.Net的方式來使用遠程PHP腳本來驗證登錄。我需要一種方式讓用戶登錄ID和密碼可用,以便我們可以使用它們與代表它們的ASP.Net服務器之間的現有Web服務進行通信。

有誰知道如何去做這種事情。或者任何好的教程或博客?

謝謝!

回答

1

可以在同一臺服務器上運行PHP和ASP.NET,甚至可以在同一個Web應用程序中運行。您還可以創建在每個PHP請求之前和/或之後運行的.NET代碼(使用HttpModule)。

IIS下的PHP只有一個單獨的HttpHandler調用cgi-bin進程。

如果你想從ASP.NET頁面調用一個PHP頁面,一種方法是使用Server.Execute()--儘管從架構的角度來看,Web服務肯定會更乾淨。

除此之外,對於您的問題的實際認證/授權部分,該方法取決於您的實施細節。你當然可以做一些事情,比如在PHP和.aspx之間共享cookie。

0

不幸的是,他們是不同的語言和php腳本不能用在asp.net網站。你將不得不重新創建你的類(腳本),但你可以做的就是使用你現有的數據庫,如果它在MySQL或其他。就我所知,這是你所能做到的最好的。

-1

您是否嘗試過使用存儲過程而不是PHP腳本?這樣您就不必編寫相同代碼的多個實例,並且可以在.NET和PHP中使用它。

0

如果這些PHP Web服務遵守某些行業標準(如SOAP),則可以通過生成強類型客戶端代理來簡單地使用它們。如果沒有,那麼,你仍然有很好的舊版本WebClient,它允許你發送HTTP請求和讀取響應。這很簡單:

using (var client = new WebClient()) 
{ 
    var values = new NameValueCollection 
    { 
     { "username", "john" }, 
     { "pwd", "secret" }, 
    }; 
    var result = client.UploadValues("http://foo.com/login.php", values); 
    // TODO: do something with the result returned by the PHP script 
} 
相關問題