Попытка сделать простейший OpenID используя DotNetOpenAuth Войти в asp.net - PullRequest
3 голосов
/ 20 августа 2010

Я скачал шаблон Visual Studio 2010, связанный с http://www.dotnetopenauth.net/.. Я могу заставить его работать так, как рекламируется.Я не запускаю проект с нуля и не хочу тратить много времени на интеграцию всех web.config, обработчиков и т. Д. В мое приложение, чтобы OpenID работал на меня.Док говорит, что я должен быть в состоянии сделать однострочную реализацию, используя кнопку и пользовательский элемент управления.Я считаю, что я сделал это, и я получаю ошибку.

Вот что я сделал.

  1. Создайте пустой веб-проект asp.net
  2. Добавьте DotNetOpenAuth.dll в bin и ссылаться на него
  3. Добавить регистрацию пользовательского элемента управления в начало страницы
  4. Создать кнопку на странице, которая вызывает пользовательский элемент управления.

Когда я запускаю ее инажмите кнопку, и я получу:

"Предварительное условие не выполнено: 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 Ответ

1 голос
/ 21 августа 2010

Вы действительно вводите идентификатор в поле перед нажатием кнопки?Вы должны.

И вы можете избежать неприятной ошибки для людей, которые забывают ввести идентификатор, добавив элемент управления 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" %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...