Asp.net mvc 2 如何让DotNetOpenAuth打开一个弹出窗口进行身份验证?
我对web开发比较陌生,所以这可能是一个新手问题。我正在尝试建立一个ASP.NET MVC网站,以实现作为OpenID依赖方的DotNetOpenAuth 现在一切正常,所以这很令人兴奋。不过,我的目标是在弹出窗口中进行OpenID身份验证。这似乎是将WebForms与DNOA自定义控件一起使用时的默认行为,但我在MVC中还没有弄清楚 我以为我已经接近这个目标了:Asp.net mvc 2 如何让DotNetOpenAuth打开一个弹出窗口进行身份验证?,asp.net-mvc-2,openid,popup,dotnetopenauth,Asp.net Mvc 2,Openid,Popup,Dotnetopenauth,我对web开发比较陌生,所以这可能是一个新手问题。我正在尝试建立一个ASP.NET MVC网站,以实现作为OpenID依赖方的DotNetOpenAuth 现在一切正常,所以这很令人兴奋。不过,我的目标是在弹出窗口中进行OpenID身份验证。这似乎是将WebForms与DNOA自定义控件一起使用时的默认行为,但我在MVC中还没有弄清楚 我以为我已经接近这个目标了: var request = OpenIdRp.CreateRequest(id); request.AddExtension(new
var request = OpenIdRp.CreateRequest(id);
request.AddExtension(new UIRequest(Mode = UIModes.Popup));
但是UIRequest的Mode字段是只读的
有人知道如何创建一个请求,告诉OpenID提供者打开一个弹出窗口吗
谢谢你的帮助。到目前为止,我还无法找到这方面的任何样本。Nerddinner网站正是您所需要的。它是用MVC编写的,您可以在这里下载源代码:。在我使用的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
});
在结果视图中,我有以下javascript
<script type="text/javascript">
$(function () {
if (window.opener) {
window.opener.location.href = window.opener.location.href;
window.close();
}
});
</script>
$(函数(){
if(窗口开启器){
window.opener.location.href=window.opener.location.href;
window.close();
}
});
我希望这是有意义的。嘿,加扎,谢谢你指出这一点。不幸的是,在我看来(我可能错了),NerdDinner仍然使用DNOA提供的自定义控件实现OpenID。我希望用代码实现我自己的解决方案。我读到有一个OpenID提供者的设计标准,它告诉提供者在弹出窗口中执行身份验证,而不是在同一窗口中。也许我误读了它,因为我还没有找到调用它的方法。我引用的文章在UX流程下。
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;
}
<script type="text/javascript">
$(function () {
if (window.opener) {
window.opener.location.href = window.opener.location.href;
window.close();
}
});
</script>