Ticker

6/recent/ticker-posts

Agregar controlador ASP.NET MVC - Fase III

Siguiendo con la fase de implementar nuestro proyecto, ahora implementaremos nuestro controlador y espero detallar algo sobre ello (más adelante profundizaré al respecto).

Controladores: La interacción del usuario con aplicaciones ASP.NET MVC, se organiza en torno a los controladores y Action Methods, es decir, se encargan de interactuar con el usuario. Considerando el punto de entrada de un Request HTTP cuando se trabaja con MVC que es el Controlador (Controller).

Con esta pequeña teoría quiero iniciar la parte practica de la implementar del controlador login y no se olviden de revisar Agrear modelo ASP.NET MVC - Fase II

1.  Clic derecho en el directorio Controllers, selecciionar Agregar y clic en controlador.

2.  Asigna nombre nombre de Login (la palabra Controller es una palabra reservada), el tipo de pantalla sera vacía y clic en aceptar.

     2.1. En nuestro controlador creado (clase) se importará el using PRO_SEGURIDAD.Models (contiene nuestro modelo login) y using PRO_SEGURIDAD.Repositorio (contiene nuestro métodos con acceso a datos). Y se implementará los siguientes métodos:

public LoginController(): Método para acceder a la clase interfaz de la conexión a datos.
public ActionResult Login(): La acción para elazar con la vista inicia, en nuestro caso es login (recuerda que nuestro archivo de configuración fue cambiada).
public ActionResult Login(Login login): La acción para control de la validación, acceso del login y redireccionar la vista según validación.
public string getRolIdUsuario(string UserId): Método para invocar al método getRolIdUsuario relacionado a la conexión a datos.

public string getIdUsuario(string UserName): Método para invocar al método getIdUsuario relacionado a la conexión a datos.
public class LoginController : Controller
    {
        ILoginData ObjILoginData;//Referencia a la interfaz para el acceso a datos

        public LoginController()
        {
            ObjILoginData = new LoginData();
        }

        [HttpGet]
        [AllowAnonymous]
        public ActionResult Login()
        {
            return View("Login");
        }

        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public ActionResult Login(Login login)
        {
            if (ModelState.IsValid)
            {
                //Se capturan los valores de la base de datos
                var IdUsuario = getIdUsuario(login.usuario);
                var RolUsuario = getRolIdUsuario(Convert.ToString(IdUsuario));

                //Se controla si el usario esta asignado a un determinado rol
                if (string.IsNullOrEmpty(Convert.ToString(RolUsuario)))
                {
                    ModelState.AddModelError("Error", "El usuario no cuenta con un rol asignado");
                    return View(login);
                }
                else
                {
                    //Se inica las sesiones
                    Session["Usuario"] = login.usuario;
                    Session["IdUsuario"] = IdUsuario;
                    Session["RolAsigando"] = RolUsuario;

                    if (string.Equals(Convert.ToString(Session["RolAsigando"]), "Admin"))
                    {
                        return RedirectToAction("AdminDashboard", "Dashboard");//Si el rol asignado es Admin se redirecciona a la vista AdminDashboard
                    }
                    else
                    {
                        return RedirectToAction("UsuarioDashboard", "Dashboard");//Si el rol asignado es Usuario se redirecciona a la vista UsuarioDashboard
                    }
                    //A esto se puede adicinar mas roles, es decir n roles y se controla a base de un switch
                }
            }
            else
            {
                ModelState.AddModelError("Error", "Por favor, Ingresar nombre del usuario y password");
            }
            return View(login);

        }

        [NonAction]
        public string getRolIdUsuario(string UserId)
        {
            return ObjILoginData.getRolIdUsuario(UserId);
        }

        [NonAction]
        public string getIdUsuario(string UserName)
        {
            return ObjILoginData.getIdUsuario(UserName);
        }

    }

3.  Ahora creamos en controles Dashboard, al igual que el punto 1 y 2. Con la diferencia que esto solo contara con la acciones para las vista AdminDashboard() y UsuarioDashboard().
public class DashboardController : Controller
    {
        //
        // GET: /Dashboard/
        public ActionResult AdminDashboard()
        {
            return View();
        }

        public ActionResult UsuarioDashboard() {
            return View();
        }
    }

Espero les sirva y les recomiendo que revisen la segunda fase.

Publicar un comentario

0 Comentarios