1

我在http://example.com上爲ASP.NET 4.0應用程序提供了Forms身份驗證設置 - 我們將其稱爲MainApp。 我也有一個在http://static.example.com上運行的ASP.NET 4.0應用程序(我們稱之爲SubApp)無法訪問主應用程序。在子域上獲取經過身份驗證的用戶的用戶名

現在,SubApp需要找出首次登錄到MainApp然後到達SubApp的用戶的用戶名。我認爲這兩個應用程序具有相同的機器密鑰並且允許SubApp在web.config中指定是足夠的,因此它可以讀取MainApp的身份驗證cookie並從中獲取用戶名。

我做了一個簡單的測試,當我嘗試在SubApp上點擊某個頁面時,它會一直重定向到http://static.example.com/login.aspx--它甚至不存在web.config中未指定的地方。顯然我的方法不起作用,但我不明白爲什麼 - 主域的cookie應該可以在子域上訪問,對吧?

這是我如何SubApp配置驗證:

<authentication mode="Forms"> 
    <forms domain="example.com"/> 
</authentication> 

<authorization> 
    <allow users="*"/> 
</authorization> 

回答

3

你可以嘗試兩個應用程序設置<forms>標籤的domain屬性在web.config中:

<authentication mode="Forms"> 
    <forms 
     loginUrl="~/Account/LogOn" 
     timeout="2880" 
     domain="example.com" 
    /> 
</authentication> 

這將有效地設置example.comstatic.example.com的身份驗證cookie有效性,這意味着在第一個域上進行身份驗證的用戶將自動在第二個域上進行身份驗證。

+0

感謝達林,它似乎工作現在 - 我可以從HttpContext登錄用戶名。但我看到了另一個問題 - 如果沒有登錄,在格蘭用戶,但它仍然重定向他們的Login.aspx頁,即使我加入<授權> \t \t \t <允許用戶=「*」 /> \t \t 到SubApp上的web.config。有任何想法嗎? – Andrey 2011-03-21 22:22:29

+0

@Andrey,你是如何處理SubApp中的身份驗證的?誰在重定向?你爲什麼讓所有用戶? – 2011-03-21 22:26:04

+0

我的SubApp只是一個處理程序,我用它來發布用戶的一些文件上傳。我想在該處理程序中執行的操作是查看用戶是否已通過身份驗證並繼續保存發佈的文件,如果用戶未通過身份驗證,則返回401。我不需要任何登錄頁面,因爲除了通過上傳處理​​程序,用戶不應該與SubApp交互。我使用SubApp – Andrey 2011-03-21 22:31:14

0

達林很出色。

我有一個主域調用一個子域(與window.open ...)與表單身份驗證兩個...將工作在我的開發機器和鉻在雲中,但不是雲中的IE10。

基本上它們都使用相同的數據庫,因此傳遞了一個guid,該guid通過主域存儲在數據庫中的子域中。這是然後從查詢字符串 和身份由FormsAuthentication.SetAuthCookie(MyUserID.ToString)

我 設置驗證 - 嘗試在服務器上的修補程序更新(感謝 - 增加了一個瀏覽器文件 - 設置cookie的=」在web.config中

UseCookies」,但它直到我所訪問的屬性設置爲根域,它在IE10的工作... 4天的研究1個小問題。

是! !!

+0

這屬於評論,而不是答案。我知道你是該網站的新手,只要記住將來的帖子。 – Andrey 2013-11-15 20:57:13

相關問題