阻止DotNetOpenAuth重定向URL

时间:2010-04-05 18:47:13

标签: jquery asp.net-mvc dotnetopenauth

每当调用RelyingParty时,DotNetOpenAuth都会提供重定向(如预期的那样)。这看起来像这样......

return request.RedirectingResponse.AsActionResult();

这项工作正常 - 但我想抓住它并将其放在对话框中,而不是重定向现有页面。有没有办法做到这一点?我正在尝试在jquery中使用带有$ .post的jQuery UI Dialog,并在成功函数上加载内容 - 但它仍然会重定向。

            $("#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。

1 个答案:

答案 0 :(得分:3)

如果您打算在jQuery对话框中显示OpenID Provider的网站,答案是您不能,这不是DotNetOpenAuth限制。这是因为大多数(实际上所有好的)提供商明确地打破了iframe并重定向整个页面以帮助培训他们的用户抵制网络钓鱼攻击。

您可以实现的最接近的方法是使提供者的页面出现在弹出窗口中,这是您当然可以做的事情,实际上DotNetOpenAuth项目模板(不仅仅是示例)演示了如何执行此操作。

不让重定向自动发生(当然可能),这是一个棘手的事情,因为你想要什么呢?一个URL?这并不总是有效,因为某些OpenID消息对于URL太长,并且必须将自发布的HTML表单发送到浏览器以发送整个消息,因此如果您接管这部分流程,则必须为此做好准备。