代码之家  ›  专栏  ›  技术社区  ›  Peter Kellner

尝试在ASP.NET中使用DotNetOpenAuth登录来创建最简单的OpenID

  •  3
  • Peter Kellner  · 技术社区  · 15 年前

    我已下载与 http://www.dotnetopenauth.net/ . 我可以按广告上说的那样工作。我不是从零开始一个项目,我不想花很多时间将所有web.config、处理程序等集成到我的应用程序中,以使OpenID为我工作。医生说我应该能够用一个按钮和一个用户控件来实现一行代码。我相信我已经做到了,而且我得到了一个错误。

    这就是我所做的。

    1. 创建空的ASP.NET Web项目
    2. 将dotnetopenauth.dll添加到bin并引用它
    3. 将用户控件注册添加到页面顶部
    4. 在调用用户控件的页面上创建按钮。

    当我运行它并按下按钮时,我得到:

    “前提条件失败:this.identifier!=空,未设置标识符。“

    我知道肯定还有很多事情要做,但我就是不明白。有人能进一步解释我需要做什么吗?

    谢谢,

    <%@ 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 回复  |  直到 15 年前
        1
  •  1
  •   Andrew Arnott    15 年前

    你真的在点击按钮之前在框中输入一个标识符吗?你必须这么做。

    对于忘记键入标识符的人,可以通过添加 RequiredFieldValidator 指向文本框的控件,然后检查 if (Page.IsValid) 在调用前在按钮的单击处理程序中 LogOn .

    希望这有帮助。你考虑过使用 OpenIdLogin 控制?如果你是在寻找最容易添加的代码,那是最容易的,因为你根本没有任何代码——只有一个标签。

    另外,一定要添加 ValidateRequest="false" 给你的 <%@ Page %> 在登录页面的顶部标记。否则,您的用户会偶尔看到随机失败,因为ASP.NET错误地将某些OpenID身份验证响应解释为攻击。 例如,如果.aspx的顶行是:

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

    成功

    <%@ Page ValidateRequest="false" Language="C#" AutoEventWireup="True" CodeBehind="login.aspx.cs" Inherits="OpenIdRelyingPartyWebForms.login" %>
    
    推荐文章