Перевод страницы сервера Java на C#
Вопрос
Я пытаюсь запустить простой валидатор пароля. Я уже написал это в 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" />
<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.
Я также настоятельно рекомендую получить Визуальная студия Если у вас его еще нет. Существуют ограниченные по времени пробные издания полного продукта. Есть также бесплатные версии с меньшим набором функций, называемых Выражать издания.
Удачи, и я надеюсь, вам понравится это изучать.