2010-04-05 72 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