我已经下载了与http://www.dotnetopenauth.net/关联的Visual Studio 2010模板。我可以像宣传的那样使它工作。我不是从头开始一个项目,也不想花很多时间将所有web.config,处理程序等集成到我的应用程序中,以使OpenID可以为我工作。该文档说,我应该能够使用按钮和用户控件进行单行实现。我相信我已经做到了,并且得到了一个错误。
这是我所做的。
当我运行它并按下按钮时,我得到:
“前提条件失败: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>
最佳答案
您实际上是在单击按钮之前在框中输入标识符的吗?你必须。
对于那些忘记键入标识符的人,您可以避免麻烦的事情,方法是添加一个指向文本框的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" %>
关于dotnetopenauth - 尝试使用asp.net中的DotNetOpenAuth登录名制作最简单的OpenID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3527603/