/// <summary> /// Initializes a new instance of the <see cref="HealthPrincipalWrapper"/> class. /// </summary> /// <param name="principal">The principal.</param> public HealthPrincipalWrapper(HealthPrincipal principal) { this.Principal = principal; this.DateTime = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc); }
/// <summary> /// Crear el contexto de seguridad del Sistema, para que este pueda ser accedido /// desde el hilo de ejecución System.Threading.Thread /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> /// <exception cref="System.Exception">@Error.NoEncontroCookieAutenticacionSistema</exception> /// <exception cref="Exception">@Error.NoEncontroCookieAutenticacionSistema</exception> private static void CreateSecurityContext(object sender, EventArgs e) { // recuperar contexto de http var httpContext = (HttpApplication)sender; // // el usuario no está autenticado? if (!httpContext.Request.IsAuthenticated) return; // // recuperar cookie de autenticación con el valor del número de cookies var cookie = httpContext.Request.Cookies[FormsAuthentication.FormsCookieName]; // // se encontró la cookie? if (cookie != null){ // recuperar boleto de autenticación var authTicket = FormsAuthentication.Decrypt(cookie.Value); // if (authTicket == null) return; // // recuperar objeto con la información de sesión var session = GetSessionFromCookies(httpContext.Context, int.Parse(authTicket.UserData)); // // crear identidad var identity = new HealthIdentity(session); // // crear contexto de seguridad var principal = new HealthPrincipal(identity); // // ajustar el contexto de seguridad de asp.net para que tome el de // y así pueda ser accedido desde cualquier librería haciendo uso // del hilo de ejecución (System.Threading.Thread) HttpContext.Current.User = principal; Thread.CurrentPrincipal = principal; } else throw new Exception(@"Error.NoEncontroCookieAutenticacionSistema"); //TODO: Revisar con Edward }