2015-02-11 77 views
0

我有一個asp.net webform應用程序(ProA)。它是由別人在不久前建立的,儘管我可以訪問源代碼。現在,我完成了另一個MVC5(ProB)應用程序。如何將UserIdentity/UserName從WebForm應用程序傳遞給MVC5應用程序?

ProA使用asp.net成員身份驗證用戶身份。 ProB沒有使用任何成員資格。現在,我們想要將用戶身份驗證添加到ProB,並且ProB的某些部分使用用戶名作爲某些數據的參數。

現在,我們要強制用戶從ProA登錄,然後點擊鏈接/按鈕,將用戶重定向到ProB。在ProB中,我們創建一個授權過濾器來驗證用戶是否有權限,然後顯示這些頁面。

我試圖跨應用程序使用表單認證,如下所示:跨身份驗證的表單身份驗證。但它不起作用。我在web.config中所做的更改如下:

<authentication mode="Forms"> 
    <forms name="X.ASPXAUTH" loginUrl="~/Login.aspx" path="/" 
       protection="All"     
     enableCrossAppRedirects="true" 
    /> 
</authentication> 

難道是因爲一個是webform,另一個是MVC?另外,ProB實際上還沒有安裝任何成員資格,它是否會影響這種形式的認證?

其他建議?

謝謝。

---增加了更多信息:

1)我在我的本地機器上測試。我在VS2012中運行這兩個站點。我應該用什麼域名? 「localhost」 的? 「.localhost」?或者,根本不使用域?似乎不工作。

2)我加入的ProA上的按鈕,點擊後,使用此重定向概率:

HttpContext.Current.Response.Redirect("http://localhost:12345/", false); 

這是正確的方法是什麼? HttpContext具有用戶標識。

3)ProB是否必須擁有會員資格?現在,ProB沒有會員特徵,這是原因嗎?

回答

2

您不應該在跨Web表單和MVC應用程序共享身份驗證時遇到任何問題。底層技術是相同的,.Net使用一個加密的cookie,它具有表單認證票證。

閱讀下面的MSDN文章:https://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx

需要注意的主要事情是domain參考和machineKey配置。 表單驗證配置的domain屬性允許瀏覽器在發送給每個站點的請求中包含該驗證cookie。然後machineKey部分是處理加密/解密的部分。 這兩個網站必須具備的配置設置了相同的這個工作,也可以在同一個域,即xyz.contoso.com和abc.contoso.com

網運行。配置

<configuration> 
 
    <system.web> 
 
    <authentication mode="Forms" > 
 
     <!-- The name, protection, and path attributes must match 
 
      exactly in each Web.config file. --> 
 
     <forms loginUrl="login.aspx" 
 
     name=".ASPXFORMSAUTH" 
 
     protection="All" 
 
     path="/" 
 
     domain="contoso.com" 
 
     timeout="30" /> 
 
    </authentication> 
 

 
    <!-- Validation and decryption keys must exactly match and cannot 
 
     be set to "AutoGenerate". The validation and decryption 
 
     algorithms must also be the same. --> 
 
    <machineKey 
 
     validationKey="[your key here]" 
 
     decryptionKey="[your key here]" 
 
     validation="SHA1" /> 
 
    </system.web> 
 
</configuration>

編輯

使用下面的鏈接即可生成機鍵:http://www.developerfusion.com/tools/generatemachinekey/

+0

感謝回答。但是,我有一些問題,請參閱原始問題的底部。 – urlreader 2015-02-11 22:55:32

+0

1.使用'localhost'作爲域名應該可以工作,如果沒有的話,我會建議將2個站點部署到開發機器上的IIS,類似於他們在生產中的情況。 2.使用該機制重定向將會很好。 3.你如何測試它在ProB應用程序中工作? – 2015-02-12 00:07:48

+0

終於搞明白了。實際上,由於它位於同一臺機器上(Dev或Production服務器),因此我們不應該使用Domain屬性。如果使用它,將無法正常工作。謝謝。 – urlreader 2015-02-17 18:26:55

相關問題