Пример #1
0
        public async Task<ActionResult> Login(FormCollection collection, string returnUrl)
        {
            HalconDBEntities db = new HalconDBEntities();

            if (!ModelState.IsValid)
            {
                return View();
            }

            // No cuenta los errores de inicio de sesión para el bloqueo de la cuenta
            // Para permitir que los errores de contraseña desencadenen el bloqueo de la cuenta, cambie a shouldLockout: true
            //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            //switch (result)
            //{
            //    case SignInStatus.Success:
            //        return RedirectToLocal(returnUrl);
            //    case SignInStatus.LockedOut:
            //        return View("Lockout");
            //    case SignInStatus.RequiresVerification:
            //        return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            //    case SignInStatus.Failure:
            //    default:
            //        ModelState.AddModelError("", "Intento de inicio de sesión no válido.");
            //        return View(model);
            //}

            Usuarios objUsuario = new Usuarios();
            Manager.Models.Roles objRol = new Manager.Models.Roles();
            UsuarioAutenticado objUsuarioAutenticado = new UsuarioAutenticado();

            string sNombreUsuario = collection["NombreUsuario"];
            string sPassword = collection["Password"];

            objUsuario = (from obj in db.Usuarios where obj.NombreUsuario == sNombreUsuario && obj.Password == sPassword /*&& objUsuario.IdEstado == 1*/ select obj).First();
            objRol = (from obj in db.Roles where obj.IdRol == objUsuario.IdRol select obj).First();

            objUsuarioAutenticado.Apellido = objUsuario.Apellido;
            objUsuarioAutenticado.IdUsuario = objUsuario.IdUsuario;
            objUsuarioAutenticado.Nombre = objUsuario.Nombre;
            objUsuarioAutenticado.NombreUsuario = objUsuario.NombreUsuario;
            objUsuarioAutenticado.Rol = objRol.Nombre;


            if (objUsuario == null)
            {
                ModelState.AddModelError("", "Intento de inicio de sesión no válido.");
                return View();
            }
            else
            {
                this.SetAuthCookie(objUsuario.Nombre + " " + objUsuario.Apellido, false, objUsuarioAutenticado);
                return RedirectToLocal(returnUrl);
            }
        }
Пример #2
0
        public void SetAuthCookie(string userName, bool createPersistentCookie, UsuarioAutenticado userData)
        {
            HttpCookie cookie = FormsAuthentication.GetAuthCookie(userName, createPersistentCookie);
            FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value);

            var json = new JavaScriptSerializer().Serialize(userData);

            UsuarioAutenticado objUsuario = new JavaScriptSerializer().Deserialize<UsuarioAutenticado>(json);

            FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(
                 ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration
                , ticket.IsPersistent, json, ticket.CookiePath
            );

            string encTicket = FormsAuthentication.Encrypt(newTicket);
            cookie.Value = encTicket;
            System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
        } // End Sub SetAuthCookie