每当调用 RelyingParty 时,DotNetOpenAuth 都会给出重定向(如预期)。这看起来像这样......
return request.RedirectingResponse.AsActionResult();
这工作正常 - 但我想捕获它并将其放入对话框中,而不是重定向现有页面。有什么办法可以做到这一点吗?我正在尝试在 jquery 中使用带有 $.post 的 jQuery UI 对话框,并在 success 函数上加载内容 - 但它仍然会重定向。
$("#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,因为我解决了最初的启动问题。
最佳答案
如果您的目的是在 jQuery 对话框中显示 OpenID 提供商的网站,那么答案是您不能,而且这不是 DotNetOpenAuth 的限制。这是因为大多数(实际上是所有好的)提供商都会明确突破 iframe 并重定向整个页面,以帮助培训用户抵御网络钓鱼攻击。
您可以实现的最接近的方法是使提供程序的页面出现在弹出窗口中,这是您当然可以做的事情,实际上 DotNetOpenAuth 项目模板(不仅仅是示例)演示了如何执行此操作。
不让重定向自动发生(当然可能)是一件棘手的事情,因为你想要什么?一个网址?这并不总是有效,因为某些 OpenID 消息对于 URL 来说太长,并且必须将自发布 HTML 表单发送到浏览器才能发送整个消息,因此如果您接管这部分流程,则必须做好准备。
关于jquery - 阻止 DotNetOpenAuth 重定向 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2580325/