Mi blog ha cambiado de sitio! Redireccionando…

Si no eres redireccionado automaticamente, sigue el siguiente vinculo http://ilopez.wordpress.com .

lunes, 14 de enero de 2008

Restricción de Accesos en ASP.NET 2.0

El año pasado, nuestro equipo inicio el desarrollo de una aplicación para el control de volúmenes de obra. Iniccialmente planteamos usar totalmente técnologias Java (Struts 2, Hibernate). Despues del primer mes de desarollo por politicas de la empresa se cambio de lenguaje a C# con SQL server, asi que junto con mi equipo tuvimos que aprender la tecnología a golpe y porrazo, durante la marcha.

Como se podrán imaginar cometimos varios errores, por nuestro poco conocimiento .net. El viernes pasado reparé uno de los que más quejas y bugs ha causado es la restricción de accesos recursos segun el rol del usuario.

Restricción de accesos
En .NET 2.0 es posible restringir globalmente el acceso a un recurso (URL), colocando los privilegios de acceso en el Web.config. por ejemplo. si tenemos un sitio con la siguiente estructura

  • Default.aspx
  • /empleados/
    • DetalleEmpleado.aspx
  • /admin/
    • Default.aspx

Queremos restringir el acceso para que los empleados tengan acceso solo a consultar el detalle del empleado y los usuarios con rol administrador sean los unicos en acceder a /admin/Default.aspx se debe tener lo siguiente declarado en el Web.config

  1.   <location path="admin/Default.aspx">

  2.     <system.web>

  3.       <authorization>


  4.         <allow roles="administradores"/>

  5.         <deny users="*"/>


  6.       </authorization>

  7.     </system.web>

  8.   </location>

  9.  

  10.   <location path="empleados/DetalleEmpleado.aspx">


  11.     <system.web>

  12.       <authorization>

  13.         <allow roles="empleados"/>


  14.         <deny users="*"/>

  15.       </authorization>

  16.     </system.web>


  17.   </location>



Con esto el framework solo permite el acceso a los usuarios perteneciente al rol especificado, niega el acceso a cualquier otro ()
  • El atributo users puede tener los siguientes wildcards
    • * indica cualquier usuario incluyendo el usuario anonimo
    • ? indica usuario anonimo

Ocultar opciones en menus y en barras de navegación



Ahora para ocultar los paths indicados en los locations anteriores, en las opciones de menu. se debe agregar lo siguiente en el web .config

  1. <system.web>

  2.     <siteMap defaultProvider="secureProvider" enabled="true">

  3.       <providers>


  4.         <add  name="secureProvider"

  5.               description="Default SiteMap provider."


  6.               type="System.Web.XmlSiteMapProvider "

  7.               siteMapFile="Web.sitemap"


  8.               securityTrimmingEnabled="true"/>

  9.       </providers>


  10.     </siteMap>

  11.     ..

  12.     ..

  13. </system.web>




Lo mas importante es el atributo securityTrimmingEnabled con esto el XmlSiteMapProvider automaticamente oculta los paths no alcanzables para un usuario dado , tomando como referencia la configuración del web.config.

Nosotros pensabamos que la restriccion se hacia en base al atributo roles del elemento siteMapNode en el web.sitemap, pero ese atributo es tomado en cuenta solo para los nodos que no tienen una URL asociada, esto lo comprendimos despues de leer el post de Danny Chen , An overview of how securityTrimmingEnabled is supposed to work de implementar tantos remedios caseros para nuestros bugs , hasta implementamos un httpModule para filtrar las URLs, si tan solo la documentación fuera más clara y nosotros nos ubieramos detenido a aprender bien la tecnologia antes de hacer remedios caseros a la mexicana

martes, 8 de enero de 2008

Evaluación de año




Esto son los resultados de mis propósitos de año 2007
  • (100%)Bajar de peso (mínimo 10 kilos en todo el año) : a inicio de año pesaba 110k, a mediados del año baje a 90k,actualmente peso 96k. logre bajar 14k.

  • (100%)Aprender a patinar:En enero me compre mis patines y me puse a patinar como loco, solo logre no caerme en todas las vueltas: D, los últimos meses del año no practique nada, aunque debí poner un indicador numérico, creo que no caerse significa que si aprendí, este año lo voy a replantear.

  • (20%)Mejorar mi ortografía:aunque mejore un poco, (ya casi no uso el F7 de Word), sigo teniendo errores garrafales, como me lamento no ponerle atención a mi maestra de español, si yo ya se hablar me decía en aquellos días, que iluso soy a veces.

  • (50%)Leer o reeler un libro técnico cada mes :leí mas de uno cada mes, pero no escribí una reseña de cada libro
Creo que me doy un 7 de calificación en cuanto a mis propositos cumplidos. Dado que siete es muy bajo voy replantearme los propositos no cumplidos junto con mis nuevos propositos para el año 2008

Propositos

Estos son mis propositos para este año 2008

  • Mejorar mi ortografía:
    • Metrica : la metrica para evaluar mi desmpeño sera la siguiente, cada post de mi blog no debe tener mas de 20% palabras mal escritas.
  • Escribir un post en mi blog a la semana :
  • Bajar de peso hasta llegar a los 85 k
    • Metrica:
20 de febrero - 95k
Mayo 90k
Septiembre 85k
  • Mejorar como padre
2007 fue un buen año pero no me di el tiempo suficiente para acudir con mi beba a todas sus citas con el doctor. Matt Riable ha sido una gran inspiración tanto en ambito técnico como en el humano, voy a tomar prestada su idea de escribir un post en cada cumpleaños de mi hija. no es mucho pero creo que a ella le va a gustar cuando sea "niña grande"

jueves, 29 de noviembre de 2007

Tabasco, El eden sin suerte

Incidentes

Si bien tabasco aun no se recupera completamente, hoy se produjo un incidente más que da vida a la rumorología que desde hace un tiempo circula en en todos lados, "Tabasco va a desaparecer " dicen unos, otros más religiosos dicen "es un castigo divino por volvernos arrogantes". Yo en lo personal pienso que es una oportunidad para que esta región del país despierte y afronte las inclemencias de la naturaleza, históricamente la region donde se encuentra tabasco ha sido privilegiada en cuanto a recursos naturales (buen clima, petróleo, tierras fertiles, etc). Los gobernantes pasan por la administración publica sin planes para desarrollo infraestructura estrategica a largo plazo, ni siquiera planean para su propio periodo, pero bueno es la escuela de la politica méxicana en su mas miserable expresión. Bueno pero cada pueblo tiene a los gobernantes que se merece.
Cada pueblo tiene a los gobernantes que se merece
Durante las inundaciones estuve de voluntario en el censo de albergues, y vi la capacidad del pueblo tabasqueño (nativos y adoptados) para unirse con un objetivo común. me gustaría que el objetivo común del pueblo tabasqueño fuera mejorar para merecer mejores gobernantes.

Tabasco es un Eden sin suerte, pero quien la necesita cuando se tiene un pueblo con ganas de de crearla a su gusto



lunes, 30 de julio de 2007

Microsft Enterprise library

El viernes pasado me heche el primer round con la Enterprise library, la cual provee varias funciones disque para facilitar el desarrollo de aplicaciones empresariales. cuando la encontré en codeplex, sonaba muy bien, pero despues de bajarla he instalarla comenzo a sacar las uñas. primero por las limitaciones de internet que tenemos por acá, no me fue posible ver los screen cast de microsoft, así que me chute toda la desimantación que encontré por alli. cheque los ejemplos, los compile y ejecute y todo funcionaba de maravilla pero cuando quise integrarlo a mi proyecto real, que me sale conque siempre no!

Could not load file or assembly 'Microsoft.Practices.EnterpriseLibrary.Logging


Allí empezaron mis problemas, cheque el archivo de configuración pero solo vi sospechoso el PublicKey =null en la declaración de la referencia.El lunes encontré el blog de Tom Hollander Product manager de Microsoft Patterns & Practices, quien mejor que este muchacho para decirme que le pasa a mi proyecto. así que me chute su post sobre las incompatibilidades de la versión pre-compilada y la compilada de la librería. Al final todo se resumió a utilizar el configurador de la version compilada C:Archivos de programaMicrosoft Enterprise Library 3.1 - May 2007Bin