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" />
      &nbsp;
      <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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow