Traduzindo um Java Server Page para C #
Pergunta
Eu estou tentando executar um validador senha simples. Eu já escrevi isso em JSP, e ele funciona. Eu sou um novato em C # e ASP.NET, e desejo à prática / aprender a escrevê-lo em C #. Como um novato, eu estou correndo em alguns problemas e estava esperando por alguma ajuda.
O que eu tinha originalmente funcionou bem. É uma solução alternativa que é uma prática ruim - mas bom para aprender Java e JSP. É só usar um servidor POP como uma solução alternativa para fazer a autenticação do usuário - bobagem, mas bom para aprender
O que eu tenho no momento é essa classe, que eu acredito que deve funcionar, armazenadas em um arquivo .aspx que minha forma usos como a "ação".
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;
}
}
Então eu ligar para o anfitrião armazenar o nome de usuário e senha e verificar contra esta forma:
<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>
O que eu estou querendo saber é:
É a "forma" de meu código correto - É correto para guardar a minha C # em um arquivo ASPX e executá-lo como necessário quando as tentativas do usuário para fazer login? Não consigo encontrar qualquer informação sobre isso e eu estou supondo que eu preciso uma estrutura como JSP onde seria executado:
if ( request.hasParameter( "Submit" ) )
{
if ( POPServer.hasLogin( request.getParameter( "username" ), request.getParameter( "username" ) ) ) {
response.location( "loginPage.aspx" );
}
}
Como você armazenar dados de sessão para que depois que o usuário é autenticado, a "página de login" é exibido eo usuário fica permanentemente conectado ao invés de apenas levado a um link e depois esquecida?
Solução
Existem dois diifferent abordagens de codificação ASP.NET, Web Forms MVC . Com Forms ASP.NET Web, que é o que você está usando, você pode fazer o código no aspx, no entanto, geralmente o código é colocado em um code-behind chamado para o idioma a ser utilizado, ou seja .aspx.cs ou .aspx .vb.
O código-behind contém uma classe associado com a página. Esta classe contém eventos que correspondem ao carregamento da página, cliques em botões, etc ASP.NET suporta uma série de embutidos controlos que são especificadas usando um asp: prefixo, isto é <asp:Label runat="server" ID="MyLabel" Text="My label text"/>
. Rótulos e outros elementos podem então ser referidos pelos seus IDs no código-behind, ou seja MyLabel.Text = "My different label text";
.
ASP.NET suports uma coleção chamada Sessão em que você pode armazenar informações que persiste durante a duração da sessão do usuário.
Gostaria de salientar que embora ASP.NET tem um modelo de segurança baseado em fornecedores e controles de login que está integrado e fornece um bom negócio mais controle sobre o comportamento de segurança do que a abordagem que você está tomando aqui. Você deverá ver a Passo a passo: Criando um Web Site ASP.NET com usuário básico Entrada no MSDN.
Eu também recomendo começar Visual Studio se você não tê-lo já. Há edições de avaliação por tempo limitado do produto completo disponível. Há também versões livres com um conjunto de recursos menor chamado edições expresso .
Boa sorte e espero que você gosta de aprender isso.