我对网络开发比较陌生,所以也许这是一个菜鸟问题。我正在尝试建立一个ASP.NET MVC网站,以实现DotNetOpenAuth作为OpenID依赖方。
现在它全部运转,所以非常令人兴奋。我的目标是让OpenID身份验证发生在弹出窗口中。当您将WebForms与DNOA自定义控件一起使用时,这似乎是默认行为,但我无法在MVC中找到它。
我以为我已经接近这个了:
var request = OpenIdRp.CreateRequest(id);
request.AddExtension(new UIRequest(Mode = UIModes.Popup));
但UIRequest的Mode字段是只读的。
有人知道如何创建一个告诉OpenID提供者打开弹出窗口的请求吗?
感谢您的帮助。到目前为止,我一直无法追查任何样本。
答案 0 :(得分:2)
在我使用的v.3.4.5上,UIRequest的Mode属性同时具有getter和setter。
var req = openid.CreateRequest(openid_identifier);
// Add UI Request
if (req.DiscoveryResult.IsExtensionSupported<UIRequest>())
{
req.AddExtension(new UIRequest()
{
Mode = UIModes.Popup
});
您必须自己创建弹出窗口。身份验证发生后,您应该刷新父窗口并关闭弹出窗口。 在表格的提交中我有
<form action="/Account/OpenIdLogOn" target="popupWin" onsubmit="return openWindow('/Account/OpenIdLogOn', 'popupWin', 500, 500);">
其中
function openWindow(url, wname, width, height) {
window.open(url, wname, "height=" + height + ",width=" + width + "location = 0, status = 1, resizable = 0, scrollbars=1, toolbar = 0");
return true;
}
在结果视图中我有以下javascript
<script type="text/javascript">
$(function () {
if (window.opener) {
window.opener.location.href = window.opener.location.href;
window.close();
}
});
</script>
我希望这是有道理的。
答案 1 :(得分:1)
Nerddinner网站正是您所需要的。它是用MVC编写的,你可以在这里下载源代码:http://nerddinner.codeplex.com/。