尝试使用Dot.net中的DotNetOpenAuth登录制作最简单的OpenID

时间:2010-08-20 01:36:24

标签: dotnetopenauth

我已下载与http://www.dotnetopenauth.net/关联的Visual Studio 2010模板。我可以像广告一样工作。我不是从头开始一个项目,我不想花很多时间将所有web.config,处理程序等集成到我的应用程序中以使OpenID为我工作。该文档说我应该能够使用按钮和用户控件进行一行实现。我相信我已经做到了,我得到了一个错误。

这就是我所做的。

  1. 创建空的asp.net web项目
  2. 将DotNetOpenAuth.dll添加到bin并引用它
  3. 将用户控制注册添加到页面顶部
  4. 在页面上创建调用用户控件的按钮。
  5. 当我按下按钮时,我得到:

    “前提条件失败:this.Identifier!= null未设置标识符。”

    我知道它必须有更多,但我只是不明白。有人可以进一步解释我需要做什么吗?

    谢谢,

    <%@ Page Language="C#" %>
    <%@ Register Assembly="DotNetOpenAuth" Namespace="DotNetOpenAuth.OpenId.RelyingParty" TagPrefix="rp" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
        protected void LoginId_Click(object sender, EventArgs e)
        {
            OpenIdTextBox1.LogOn();
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
    
            <asp:Button ID="LoginId" runat="server" Text="Button" onclick="LoginId_Click" />
    
          <rp:OpenIdTextBox ID="OpenIdTextBox1" runat="server" />
    
        </div>
        </form>
    </body>
    </html>
    

1 个答案:

答案 0 :(得分:1)

您是否在点击按钮之前在框中输入了标识符?你必须。

您可以通过添加指向文本框的RequiredFieldValidator控件,然后在调用{之前检查按钮的单击处理程序中if (Page.IsValid)来忘记键入标识符,从而避免出现令人讨厌的错误{1}}。

希望这会有所帮助。您是否考虑过使用LogOn控件?如果你拍摄最容易添加,这是最简单的,因为你根本没有任何代码 - 只有一个标签。

另外,请务必将OpenIdLogin添加到登录页面顶部的ValidateRequest="false"标记中。否则,您的用户会偶尔看到随机失败,因为ASP.NET错误地将某些OpenID身份验证响应解释为攻击。 例如,如果.aspx的顶行是:

<%@ Page %>

成功

<%@ Page Language="C#" AutoEventWireup="True" CodeBehind="login.aspx.cs" Inherits="OpenIdRelyingPartyWebForms.login" %>