Curso sobre programacion c# y Visual Studio 2019. En este blog veremos tutoriales para aprender a crear nuestras aplicaciones de consola,aplicaciones web, SQL , Tensorflow y Machine Learning
- En este capítulo del curso de programación en c# con visual studio
2017vamos a ver como crear una página maestra para un sitio web.Las páginas maestras de ASP.NET
permiten crear un diseño común para las páginas de la aplicación.
Puede definir el aspecto, el diseño y el comportamiento estándar que
desea que tengan todas las páginas (o un grupo de páginas) de la
aplicación en una sola página maestra.
- La página maestra define la apariencia de las páginas del sitio.Puede contener cualquier combinación de texto estático y controles.Una
página maestra también contiene marcadores de posición de
contenido que indican dónde aparecerá el contenido dinámico cuando se
muestren las páginas.
- En este capítulo del curso de programación en c# con visual studio
2017vamos a ver como crear unmecanismo para actualizar passwords que tengamos almacenadas en una base de datos.Para ello generamos una url con el email del usuario cifrado que pondremos como parametro en la querystring, y creamos otra página que valide y actualice en base de datos. Los pasos para cambiar la password son los siguientes:
El usuario hace click en el enlace ¿Olvido su contraseña?
Al hacer click solicitamos un email con el que validaremos que usuario existe en nuestro el sistema.
En el caso que el usuario exista generamos una url con el email cifrado incrustado en ella como parametro encriptado.Esta url apuntará a una página que tenemos creada para actualizar la password en la base de datos.
Esta url debería llegar al usuario via email.
Cuando el usuario hace clic en esta url validamos el email que nos llega encriptado no ha sido alterado (esta comprobación la hacemos para evitar en la medida de lo posble los bot y ataques varios).
Si todo es correcto apareceran en pantalla dos cajas de texto donde el usuario debe poner la nueva password.
Despues de poner la password pulsando el botón actualizaremos en la base de datos.
- En el video muestro como se hacen estos pasos:
- Os dejo el código completo del ejmplo del Login:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Net.Mail;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GestionVarios
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// CODIGO QUE ENVIARIA UN MAIL CON LA URL.ESTA HECHO EN EL KEYLOGGER
lblErrorREcordar.Text = url + "//" + Request.Url.Host +":"+Request.Url.Port+ "/RecuperarPass.aspx?p=" + encoded ;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GestionVarios
{
public partial class RecuperarPass : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string mail = obtenerMail();
validarEmail(mail);
}
private string obtenerMail()
{
byte[] byteArray = Convert.FromBase64String(Request.QueryString["p"]);
string value = System.Text.Encoding.UTF8.GetString(byteArray);
String miclave = ConfigurationManager.AppSettings["clave"];
byte[] claveCifrado = System.Text.Encoding.ASCII.GetBytes(miclave);
Cifrado c = new Cifrado(claveCifrado);
string mail = c.descifrar(byteArray);
return mail;
}
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(cadena);
}
encrypted = msEncrypt.ToArray();
}
}
}
return encrypted;
}
private string DesencriptarStringFromBytesAes(byte[] textoCifrado, byte[] clave, byte[] IV)
{
if (textoCifrado == null || textoCifrado.Length <= 0)
throw new ArgumentNullException("cipherText");
if (clave == null || clave.Length <= 0)
throw new ArgumentNullException("Key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("IV");
string plaintext = null;
using (MemoryStream msDecrypt = new MemoryStream(textoCifrado))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
plaintext = srDecrypt.ReadToEnd();
- En este capítulo del curso de programación en c# con visual studio
2017vamos a ver como crear un página de Login que valida contra una base de datos SQL Server. En el caso, que el usuario que esta intentado entrar en el sitio web exista en el sistema le dejara ingresar, si no lanzaremos un error de autenticación.
- Para validar que el usuario existe, buscamos en la base datos via procedimiento almacenado el valor que usuario introduza en el campo usuario (en nuestro caso el email). Si encontramos el email en nuestro sistema devolvemos a la aplicación el email y la password cifrada asociada que tiene, si no le encontramos lanzamos un error que mostraremos por pantalla.
- Una vez que tenemos la password y el usuario comprobamos que la password almacenada coincide con la que usuario introduzca. En el video siguiente lo veréis con más claridad:
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GestionVarios
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(cadena);
}
encrypted = msEncrypt.ToArray();
}
}
}
return encrypted;
}
private string DesencriptarStringFromBytesAes(byte[] textoCifrado, byte[] clave, byte[] IV)
{
if (textoCifrado == null || textoCifrado.Length <= 0)
throw new ArgumentNullException("cipherText");
if (clave == null || clave.Length <= 0)
throw new ArgumentNullException("Key");
if (IV == null || IV.Length <= 0)
throw new ArgumentNullException("IV");
string plaintext = null;
using (MemoryStream msDecrypt = new MemoryStream(textoCifrado))
{
using (CryptoStream csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read))
{
using (StreamReader srDecrypt = new StreamReader(csDecrypt))
{
plaintext = srDecrypt.ReadToEnd();
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver dos controles de uso común en muchas de las páginas web
que utilizamos habitualmente.Vamos con una breves definiciones de ellos:
FileUpload: Es un control que permite subir ficheros desde nuestros equipos a los servidores. Se compone de un cuadro de texto y un botón Examinar que permiten a los
usuarios seleccionar un archivo para cargarlo al servidor.
HiddenField: El control HiddenField
constituye un medio para almacenar información en la página sin
mostrarla. Para incluir información en un control HiddenField, hay que establecer su propiedad Vallue con el valor que desea almacenar.
Al igual que cualquier otro control de servidor Web, la información incluida en un control HiddenField
está disponible durante la devolución de datos. La información no se conserva fuera de la página.
- En el video os muestro un ejemplo de uso de estos dos controles:
- Para completar la información mostrada en el vídeo sobre los dos controles con los que estamos trabajando os dejo los enlaces a páginas de Microsoft:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GestionVarios
{
public partial class EjemploControlesVarios : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Calendar1.SelectedDate = DateTime.Now;
lblMostrar.Text = Calendar1.SelectedDate.ToShortDateString();
}
}
protected void btnClic_Click(object sender, EventArgs e)
{
if (Calendar1.SelectedDate < DateTime.Now)
lblMostrar.Text = "No puede seleccionar una fecha anterior a hoy";
else
lblMostrar.Text = "OK";
}