GENERAR EL CONTROLADOR USUARIO
Seleccionar carpeta Controllers/Agregar/Controlador
En el controlador de usuario se programa toda la lógica para poder registrar, Autenticar y finalizar sesión de los usuarios
Lógica controlador de usuario
En el archivo Controllers/UserController.cs, se codifica la lógica correspondiente a la autenticación y creación de usuarios
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;
namespace MvcLogin.Controllers
{
public class UserController : Controller
{
public ActionResult Index()
{
return View();
}
/// <summary>
/// Realizar el llamado de la vista que contiene la GUI de Autenticación de la aplicación
/// </summary>
/// <returns></returns>
[HttpGet]
public ActionResult logIn()
{
return View();
}
/// <summary>
/// Verificar los datos suministrados por el usuario al realizar la petición Post de envió de información
/// mediante la GUI de Autenticación de la aplicación.
/// </summary>
/// <param name=»user»></param>
/// <returns></returns>
[HttpPost]
public ActionResult logIn(Models.UserModel user)
{
if (ModelState.IsValid) //Verificar que el modelo de datos sea válido en cuanto a la definición de las propiedades
{
if (Isvalid(user.Email,user.Password))//Verificar que el email y clave exista utilizando el método privado
{
FormsAuthentication.SetAuthCookie(user.Email, false); //crea variable de usuario con el correo del usuario
return RedirectToAction(«Index», «Home»); //dirigir al controlador home vista Index una vez se a autenticado en el sistema
}
else
{
ModelState.AddModelError(«», «Login data in incorrect»); //adicionar mensaje de error al model
}
}
return View(user);
}
/// <summary>
/// Realizar el llamado de la vista que contiene la GUI, para registrarse en el sistema
/// </summary>
/// <returns></returns>
public ActionResult Registration()
{
return View();
}
/// <summary>
/// Verificar los datos suministrados por el usuario al realizar la petición Post de envió de información
/// mediante la GUI para crear un nuevo usuario en el sistema
/// </summary>
/// <param name=»user»></param>
/// <returns></returns>
[HttpPost]
public ActionResult Registration(Models.UserModel user)
{
if (ModelState.IsValid )
{
using (var db = new MainDbContext()) //crear objeto con referencia a la base de datos para crear el nuevo usuario
{
var sysUser = db.SystemUsers.Create();
sysUser.Email = user.Email;
sysUser.Password = user.Password;
sysUser.PasswordSalt = user.Password;
sysUser.UserId = Guid.NewGuid();
db.SystemUsers.Add(sysUser);
db.SaveChanges();
return RedirectToAction(«Index», «Home»);
}
}
else
{
ModelState.AddModelError(«», «Login data is incorrect.»); //adicionar mensaje de error al model
}
return View();
}
/// <summary>
/// Cerrar sesión del usuario autenticado
/// </summary>
/// <returns></returns>
public ActionResult LogOut()
{
FormsAuthentication.SignOut();
return RedirectToAction(«Index»,»Home»);
}
/// <summary>
/// Metodo para validar el email y password del usuario, realiza la consulta a la base de datos
/// </summary>
/// <param name=»Email»>Email ingresado</param>
/// <param name=»password»>Password ingresado</param>
/// <returns>
/// True:Usuario valido
/// False Usuario Invalido
/// </returns>
private bool Isvalid(string Email, string password)
{
bool Isvalid = false;
using (var db = new MainDbContext())
{
var user = db.SystemUsers.FirstOrDefault(u => u.Email == Email); //consultar el primer registro con los el email del usuario
if (user !=null)
{
if (user.Password == password) //Verificar password del usuario
{
Isvalid = true;
}
}
}
return Isvalid;
}
}
GENERAR LAS VISTAS DE USUARIO
En el archivo Controllers/UserController.cs, para los controladores de public ActionResult Index(), public ActionResult logIn(), public ActionResult Registration() y public ActionResult LogOut(), se genera las respectivas vistas seleccionando con clic derecho sobre index()|logIn()|Registration()|LogOut()|/Agregar vista
Vista Index() User | Vista logIn() User |
Vista Registration() User | Vista LogOut() User |
Las respectivas vistas de usuario se agregan a la carpeta Views,
Método validar usuario
A través del método privado Isvalid(string Email, string password), que se encuentra en el archivo Controllers/USerController.css, se valida los datos ingresados por el usuario: email y password. El método retorna un valor boleano que solo será verdadero si al consultar en la base de datos encuentra el Email y su respectivo Password, en caso contrario retorna un valor Falso
private bool Isvalid(string Email, string password)
{
bool Isvalid = false;
using (var db = new MainDbContext())
{
var user = db.SystemUsers.FirstOrDefault(u => u.Email == Email); //consultar el primer registro con el email del usuario
if (user !=null)
{
if (user.Password == password) //Verificar password del usuario
{
Isvalid = true;
}
}
}
return Isvalid;
}
MODIFICAR LAS VISTAS
Página de diseño maestra: Se encuentra en la Views/Shared, se utiliza como plantilla base que permite definir el mismo estilo que podrá ser usado por las demás vistas.
A través de esta vista para el ejercicio se encuentran los enlaces para Registrar, Autenticarse y finalizar sesión. Todas las vistas creadas hacen uso de esta página maestra
Página logIn:
- Se encuentra en la Views/User, se utiliza para ingresar los datos de email, Password y autenticarse en el sistema.
- Muestra los mensajes de error de acuerdo a la definición realizada en el modelo de datos
Views/User/logIn.cshtml | |
Código | Interfaz Resultante |
<!–Referencia del modelo de usuario –> @model MvcLogin.Models.UserModel @{ ViewBag.Title = «LogIn»; Layout = «~/Views/Shared/_Layout.cshtml»; } @using (Html.BeginForm()) { @Html.ValidationSummary(true, «Login fallido,verificar los datos.»); <div> <fieldset> <legend>Login Form</legend> <div>@Html.LabelFor(u => u.Email ) </div> <div> @Html.TextBoxFor(u=> u.Email) @Html.ValidationMessageFor(u => u.Email) </div> <div>@Html.LabelFor(u=> u.Password ) </div> <div> @Html.PasswordFor(u=> u.Password) @Html.ValidationMessageFor(u=> u.Password) </div> <input type=»submit» value=»Ingresar» /> </fieldset> </div> } |
Página Registrar:
- Se encuentra en la Views/User, se utiliza para adicionar nuevos usuarios y lograr autenticarse en el sistema.
- Muestra los mensajes de error de acuerdo a la definición realizada en el modelo de datos