// Расшифровать данные и добавить содержимое
  int Index;
  string[] SplittedData = StringData.Split(new char[] {'&'} );
  foreach (string SingleData in SplittedData)
  {
    Index = SingleData.IndexOf('=');
    base.Add(
      HttpUtility.UrlDecode(SingleData.Substring(0, Index)),
      HttpUtility.UrlDecode(SingleData.Substring(Index + 1))
    );
  }
}

Конструктор первым делом декодирует шестнадцатеричную информацию из переданной строки и воспользуется DPAPI для расшифровки информации, записанной в строке запроса. Затем он разбивает информацию на ее части и добавляет пары имя-значение в базовую StringCollection.

Теперь у вас есть готовая инфраструктура для создания простой тестовой страницы и безопасной передачи ее от одной страницы к другой.

Создание тестовой страницы

Чтобы протестировать класс EncryptedQueryString, вам понадобятся две страницы — одна, устанавливающая строку запроса и перенаправляющая пользователя на другую страницу, которая извлекает строку запроса. Первая содержит текстовое поле для ввода информации, как показано ниже:

<form id="form1" runat="server">
<div>
Enter some data here: <asp:TextBox runat="server" ID="MyData" />
<br />
<br />
  <asp:Button ID="SendCommand" runat="server" Text="Send Info"
OnClick="SendCommand_Click" />
</div>
</form>

Когда пользователь щелкает на кнопке SendCommand, страница посылает зашифрованную строку запроса принимающей странице следующим образом:

protected void SendCommand_Click(object sender, EventArgs e)
{
  EncryptedQueryString QueryString = new EncryptedQueryString();
  QueryString.Add("MyData", MyData.Text);
  QueryString.Add("MyTime", DateTime.Now.ToLongTimeString());
  QueryString.Add("MyDate", DateTime.Now.ToLongDateString());
  Response.Redirect("QueryStringRecipient.aspx?data=" +
    QueryString.ToString());
}

Обратите внимание, что страница вводит полностью зашифрованную строку данных как один параметр по имени data в строку запроса страницы назначения. На рис. 25.9 показана страница в действии.

Целевая страница десериализует переданную через параметр строку в параметр строки запроса с помощью ранее созданного класса, как показано ниже:

предыдущая    следующая страница    вначало главы    оглавление

1022

Hosted by uCoz