验证openid文本框

时间:2010-08-20 10:10:31

标签: validation dotnetopenauth

如何将open id文本框验证为stackoverflow我使用的是dotnet open id 我所做的是

<asp:CustomValidator runat="server" ID="openidValidator" ErrorMessage="Invalid OpenID Identifier"
    ControlToValidate="txtOpenId" EnableViewState="false" OnServerValidate="openidValidator_ServerValidate"
    ValidationGroup="validateOpenID" />  

中的代码

protected void openidValidator_ServerValidate(object source, ServerValidateEventArgs args) 
    {

        // This catches common typos that result in an invalid OpenID Identifier.
        args.IsValid = Identifier.IsValid(args.Value);
    }

但在所有情况下都没有验证

2 个答案:

答案 0 :(得分:1)

验证OpenID标识符有两个步骤。一种是在没有任何网络访问的情况下验证其形式。而Identifier.IsValid就是这样做的。是的,单个字母实际上是有效的OpenID“用户提供的标识符”。它可以是由本地网络上的另一台计算机托管的OpenID标识符。除非你真正采取下一步,即OpenIdRelyingParty.CreateRequest,看看它是否失败,否则无法确定。

StackOverflow通过查看可能的标识符来执行一些额外的验证步骤,并编写自定义规则来拒绝看起来不像真正标识符的标识符(尽管技术上它们可以)。据我所知,目前还没有完整的清单,如果你想进行额外的验证,你必须编写自己的逻辑。只是在允许标识符方面犯了错误,因为如果您对选择的输入过于挑剔,则可能会勾选某些用户。

答案 1 :(得分:0)

我想你想设置文本框的限制。为此你有范围字段验证器,使用它可以设置字母或数字的限制。您可以使用属性窗口执行此操作。