Вопрос

Я пытаюсь запустить простой валидатор пароля. Я уже написал это в JSP, и это работает. Я новичок в C# и ASP.NET, и хочу практиковать/учиться, написав его в C#. Как новичок, я сталкиваюсь с некоторыми проблемами и надеялся на помощь.

То, что я изначально работал хорошо. Это обходной путь, который плохая практика, но хорошо для изучения Java и JSP. Он просто использует поп -сервер в качестве обходного пути для аутентификации пользователей - глупо, но хорошо учиться!

В данный момент у меня есть этот класс, который, как я считаю, должен работать, хранится в файле .aspx, который моя форма использует в качестве «действия».

class POPServer
{
    static Boolean hasLogin(string username, string password)
    {
        const bool isValid;
        using (var client = new TcpClient("host.hosty.com", 110))
        using (var stream = client.GetStream())
        using (var reader = new StreamReader(stream))
        using (var writer = new StreamWriter(stream))
        {
            writer.WriteLine("USER " + username );
            writer.WriteLine("PASS " + password );
            const string response = reader.ReadLine();
            isValid = response[ 0 ] == '+';
            writer.WriteLine("quit\n");
        }
        return isValid;
    }
}

Поэтому я подключаюсь к хосту, хранящему имя пользователя и пароль и подтверждаю эту форму:

<form action="POPServer.aspx" method="post">
  <fieldset>
    <legend>Login Form</legend>
    <label for="teachername">Username:
      <input type="text" name="teachername" id="teachername" value="" />
    </label>
    <label for="teacherpass">Password:
      <input type="password" name="teacherpass" id="teacherpass" value="" />
    </label>
    <label for="teacherremember">
      <input class="checkbox" type="checkbox" name="teacherremember" id="teacherremember" checked="checked" />
      Remember me</label>
    <p>
      <input type="submit" name="teacherlogin" id="teacherlogin" value="Login" />
      &nbsp;
      <input type="reset" name="teacherreset" id="teacherreset" value="Reset" />
    </p>
  </fieldset>
</form>

Мне интересно:

Правильная ли «форма» моего кода - правильно ли хранить мой C# в файле ASPX и запускать ее по мере необходимости, когда пользователь пытается войти в систему? Я не могу найти никакой информации об этом, и я предполагаю, что мне нужна такая структура, как JSP, где вы работали:

if ( request.hasParameter( "Submit" ) )
{
    if ( POPServer.hasLogin( request.getParameter( "username" ), request.getParameter( "username" ) ) ) {
        response.location( "loginPage.aspx" );
    }
}

Как сохранить данные сеанса, поэтому после того, как пользователь будет аутентифицирован, отображается «страница для входа», и пользователь постоянно входит в систему, а не просто доставляется по ссылке, а затем забыт?

Это было полезно?

Решение

Существуют два дифферентных подхода к кодированию asp.net, Веб -формы а также MVC. Анкет С веб-формами ASP.NET, которые вы используете, вы можете делать код в. .vb.

Код-бенд содержит класс, связанный со страницей. Этот класс содержит события, которые соответствуют загрузке страницы, нажатиям кнопок и т. Д. ASP.NET поддерживает ряд встроенных элементов управления, которые указаны с использованием ASP: PREFIX, т.е. <asp:Label runat="server" ID="MyLabel" Text="My label text"/>. Анкет Метки и другие элементы могут затем упоминаться по их идентификаторам в коде-заводе, т.е. MyLabel.Text = "My different label text";.

ASP.NET SUPORTS Коллекция под названием Сессия в котором вы можете хранить информацию, которая сохраняется на время сеанса пользователя.

Я должен отметить, что ASP.NET имеет модель безопасности, основанную на поставщиках и вход в систему элементы управления Это интегрировано и обеспечивает гораздо больший контроль над поведением безопасности, чем подход, который вы здесь используете. Вы должны увидеть Прохождение: Создание веб -сайта ASP.NET с основным пользовательским входом в систему на MSDN.

Я также настоятельно рекомендую получить Визуальная студия Если у вас его еще нет. Существуют ограниченные по времени пробные издания полного продукта. Есть также бесплатные версии с меньшим набором функций, называемых Выражать издания.

Удачи, и я надеюсь, вам понравится это изучать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top