Pregunta

Estoy tratando de ejecutar un validador de contraseña simple. Ya lo he escrito en JSP, y funciona. Soy un principiante en C# y ASP.NET, y deseo practicar/aprender escribiéndolo en C#. Como principiante, me estoy encontrando con algunos problemas y esperaba ayuda.

Lo que originalmente había funcionado bien. Es una solución que es una mala práctica, pero es bueno para aprender Java y JSP. Solo usa un servidor POP como una solución para hacer autenticación de usuarios, ¡tonto, pero es bueno aprender!

Lo que tengo en este momento es esta clase, que creo que debería funcionar, almacenada en un archivo .aspx que mi forma usa como "acción".

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;
    }
}

Así que me conecto al host que almacena el nombre de usuario y la contraseña y verifico en este formulario:

<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>

Lo que me pregunto es:

¿Es correcto la "forma" de mi código? ¿Es correcto almacenar mi C# en un archivo ASPX y ejecutarlo según sea necesario cuando el usuario intente iniciar sesión? No puedo encontrar ninguna información sobre esto y supongo que necesito una estructura como JSP donde ejecutaría:

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

¿Cómo almacena los datos de la sesión, así que después de que se autentica el usuario, se muestra la "página de inicio de sesión" y el usuario se inicia permanentemente en lugar de simplemente traído a un enlace y luego se olvida?

¿Fue útil?

Solución

Hay dos enfoques diferentes para codificar ASP.NET, Formularios web y MVC. Con los formularios web de ASP.NET, que es lo que está utilizando, puede hacer código en el .aspx, sin embargo, generalmente el código se coloca en un código detrás del idioma que se usa, es decir .Aps.cs o .aspx .vb.

El código-behind contiene una clase asociada con la página. Esta clase contiene eventos que corresponden a la carga de la página, los clics del botón, etc. ASP.NET admite una serie de controles incorporados que se especifican utilizando un ASP: Prefix, es decir <asp:Label runat="server" ID="MyLabel" Text="My label text"/>. Las etiquetas y otros elementos pueden ser referidos por sus identificaciones en el código a menos, es decir MyLabel.Text = "My different label text";.

ASP.NET Suporta una colección llamada Sesión en el que puede almacenar información que persiste durante la duración de la sesión del usuario.

Sin embargo, debo señalar que ASP.NET tiene un modelo de seguridad basado en proveedores y Controles de inicio de sesión Eso está integrado y proporciona mucho más control sobre el comportamiento de seguridad que el enfoque que está adoptando aquí. Deberías ver el Tutorial: Creación de un sitio web ASP.NET con inicio de sesión básico del usuario en msdn.

También recomiendo encarecidamente obtener Estudio visual Si aún no lo tienes. Hay ediciones de prueba limitadas en el tiempo del producto completo disponible. También hay versiones gratuitas con un conjunto de características menor llamado Expresar ediciones.

Buena suerte y espero que disfrutes aprendiendo esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top