2010-04-05 94 views
2

只要對RelyingParty進行調用,DotNetOpenAuth就會提供重定向(如預期的那樣)。這看起來是這樣的......停止DotNetOpenAuth重定向URL

return request.RedirectingResponse.AsActionResult(); 

這工作好了 - 但我想抓住它,並把它放在一個對話框,而不是重定向現有的頁面。有沒有辦法做到這一點?我試圖用jQuery UI中的$ .post來使用jQuery UI對話框,並在成功函數中加載內容 - 但它仍然會重定向。

  $("#openIdForm").submit(function() { 
       $.post({ 
        // Basic ajax request properties 
        url: 'user/LogOn', 
        data: $('#openIdForm').serialize(), 
        success: function (objResponse) { 
         // It's ignoring me! :( 
         $('#dialog').load(objResponse).dialog('open'); 
        } 
       }) 
      }); 

我終於開始得到許多件在一起,我真的很喜歡DotNetOpenAuth因爲我解決了初始啓動的問題。

回答

3

如果您的意圖是在您的jQuery對話框中顯示OpenID提供商的網站,答案是你不能,並且這不是DotNetOpenAuth限制。這是因爲大多數(實際上所有好的)提供商明確地跳出iframe並重定向整個頁面以幫助訓練他們的用戶抵制釣魚攻擊。

您可以實現的最接近的目的是讓提供者的頁面出現在彈出窗口中,這是您當然可以做的事情,事實上DotNetOpenAuth項目模板(不僅僅是示例)演示瞭如何執行此操作。

這是一個棘手的事情,不讓重定向自動發生(當然可能),因爲你想要什麼呢?一個URL?這並不總是有效,因爲一些OpenID消息對於一個URL來說太長了,而且必須發送一個自我發佈的HTML表單來發送整個消息,所以如果你接管了這部分流程,你必須爲此做好準備。

+0

這很有道理。那麼我想我在這件事上沒有多少選擇。非常感謝您的時間! – Ciel 2010-04-06 15:15:35

+0

不過,我很困惑。這如何幫助培訓人們抵制釣魚攻擊? – Ciel 2010-04-06 15:16:09

+0

如果RP可以託管提供者詢問用戶的登錄憑據的iframe,則用戶輸入他們的用戶名/密碼,而瀏覽器窗口的位置欄給出RP的URL而不是提供者的URL。除非URL顯示OP的URL,否則提供者需要訓練他們的用戶*從不*放棄他們的憑證。 – 2010-04-06 16:43:51