JASoft.org

Proveedores universales de ASP.NET: Membership y Roles fuera de SQL Server

Proveedores universales de ASP.NET: Membership y Roles fuera de SQL Server
Como todo programador de ASP.NET sabe, la mayor parte de las API de esta plataforma de desarrollo web están basadas en el modelo de proveedores. Para explicarlo de manera rápida, básicamente esto significa que entre la funcionalidad que el programador utiliza y el almacenamiento relacionado con ésta, existe un elemento intermedio llamado "proveedor" que desacopla ambas partes. De esta manera, si queremos utilizar otro tipo de almacenamiento basta con cambiar el proveedor en la configuración y listo. no es necesario tocar el código en absoluto, por lo que resulta muy cómodo y útil. El siguiente esquema (sacado de MSDN) ilustra la arquitectura de este modelo: Como vemos muchos servicios como los de seguridad (Membership y Roles), la personalización (Profile) u otros como el almacenamiento de la sesión o los WebParts, están basados en este modelo, representados por las cajas de la parte superior. Así, la información de los usuarios, los roles, los perfiles, las sesiones, etc... [Más]

Seguridad de aplicaciones Web: las técnicas más interesantes para que no hackeen tu aplicación

Seguridad de aplicaciones Web: las técnicas más interesantes para que no hackeen tu aplicación
Este pasado martes impartí una charla en el grupo de usuarios de ASP.NET de España (AUGES) titulada como este post: “Seguridad de aplicaciones Web: las técnicas más interesantes para que no hackeen tu aplicación” El resumen de la misma es el siguiente: Programar es mucho más que la simple creación de aplicaciones que cumplen con la funcionalidad para la que fueron diseñadas. Existen otras muchas consideraciones que hacer y multitud de características tan importantes como la propia funcionalidad que se deben tener en cuenta: rendimiento, extensibilidad, facilidad de mantenimiento, etc... entre las que destaca especialmente la seguridad del código que se escribe. De poco o de nada sirve una aplicación que lleva a cabo su cometido principal pero que permite que casi cualquiera pueda acceder a la información que supuestamente protege o que, debido a la escritura de código descuidado, un competidor desleal impide su funcionamiento cuando más se necesita. Y no, no llega con tener... [Más]

Recibir resultados de una página en otra: Transferencias y Cross-page posting

Recibir resultados de una página en otra: Transferencias y Cross-page posting
Hay ocasiones en las que tenemos una página muy poblada de controles que se deben mostrar en pasos sucesivos. Desde una simple recogida de datos que se haya complicado un poco, hasta varios pasos de un asistente, por ejemplo. Existen muchas maneras de solucionar esta situación y hacer que las páginas estén un poco más despejadas. Por ejemplo, podemos usar un control Wizard nativo de ASP.NET Web Forms. Sin embargo una forma mucho más natural de conseguirlo es recibir los resultados de la primera página en una nueva que los procesa y continúa el flujo de la aplicación. De hecho, en los paradigmas de programación convencionales (o sea, en todo lo que no sea Web Forms, incluyendo ASP.NET MVC pero también PHP, etc...) realmente es como se ha hecho siempre: unas páginas pasan datos a otras para procesarlos. Transferencia en el lado del servidor En ASP.NET disponemos de la instrucción Server.Transfer que nos permite derivar la ejecución actual de una página hacia otra, como si se ejecutase... [Más]

Mostrar fechas relativas estilo Facebook en nuestras aplicaciones

Mostrar fechas relativas estilo Facebook en nuestras aplicaciones
Este es un truco sencillo pero útil que puede ayudar a hacer más amigables las fechas de cara a los usuarios. Generalmente cuando mostramos una fecha y hora en una de nuestras aplicaciones tendemos a mostrar este dato de la forma habitual, es decir, visualizando la fecha y la hora en el formato que sea apropiado para el idioma y país actuales. Sin embargo para la mayoría de los usuarios esta información no les dice gran cosa y tienen que fijarse y hacer cálculos mentales para hacerse una idea de cuándo es exactamente ese evento, sea en el pasado o en el futuro. En este sentido sería mucho más útil mostrarle al usuario una fecha indicada de un modo más amigable, relativo al momento actual y de forma que resulte más informativa para el usuario medio. Así, en lugar de mostrarles simplemente la fecha, resultaría mucho más útil decirles cosas como "Hace 3 minutos", "Dentro de 2 días" o expresiones similares. Incluso podríamos mostrarle ambas cosas, por ejemplo expresi... [Más]

Campos ReadOnly y InsertVisible en edición de datos con controles enlazados Web Forms

Campos ReadOnly y InsertVisible en edición de datos con controles enlazados Web Forms
En las rejillas (y en realidad en cualquier control enlazado a datos de ASP.NET Web Forms) es posible marcar algunos campos como de solo lectura estableciendo como verdadera su propiedad ReadOnly. Si establecemos un campo como ReadOnly, a la hora de editarlo se comporta como una etiqueta, es decir, se muestra de la misma manera tanto en modo visualización como en modo edición, normalmente en forma de etiqueta de texto que muestra el contenido del campo. Si se trata de una plantilla, ya no tendremos la propiedad ReadOnly y tendremos que sustituir el TextBox por defecto para edición por una etiqueta o similar en el caso de la plantilla de edición de registros, pero esto es otra historia. Bien, la cuestión es que este comportamiento tiene un efecto secundario que puede causarnos algunos problemas (o al menos despistarnos un poco según lo que esperemos) y es que los campos ReadOnly no se envían al servidor durante las inserciones y actualizaciones. Es decir, a todos los efectos es co... [Más]

Cómo activar las búsquedas en SharePoint 2010

Cómo activar las búsquedas en SharePoint 2010
Si has creado un sitio de SharePoint 2010 y al utilizar el recuadro de búsqueda obtienes cero resultados y un mensaje de error que dice: "No se puede completar la búsqueda porque este sitio no está asignado a un indexador..." Entonces es que tienes el servicio de búsquedas de SharePoint detenido. Para activarlo tienes que abrir la Administración Central de SharePoint e irte al apartado de "Gestión de Aplicaciones", y dentro de éste a "Gestionar los servicios en el servidor": Una vez entre en este apartado verás que el servicio está detenido, por lo que debes pulsar sobre el botón de activarlo: Pulsa para aumentar En la figura es el segundo desde abajo. Al Iniciarlo se nos pedirá que configuremos algunas cosas: Se especifican los usuarios que se utilizarán para ejecutar el servicio y acceder a los contenidos (una descripción detallada de los permisos que necesitas la tienes aquí), se le otorga un nombre (y un servidor SQL Server q... [Más]

Cómo migrar/cambiar de dominio Sharepoint Foundation 2010

Cómo migrar/cambiar de dominio Sharepoint Foundation 2010
No soy ningún experto en SharePoint, pero sí que llevo ya unos cuantos años gestionándolo y personalizándolo, desde su primera versión. Dentro de Krasis tenemos varios sistemas montados sobre SharePoint Foundation 2010 (desde el CRM hasta la gestión de tareas, algunas documentaciones, etc...). A medida que pasaban los años he tenido que ir migrando estos portales internos de versión en versión de SharePoint. La verdad es que no se trata de un proceso fácil muchas veces, ya que en mi opinión el instalador y configurador de SharePoint es bastante lioso para mi gusto y da pocas opciones de solucionar cosas que van pasando, que al final debes resolver muchas veces casi mediante prueba y error. Hace poco hemos tenido que migrar el dominio de Directorio Activo de la empresa a uno nuevo. Esto supuso un nuevo reto pues, al no ser un experto, tuve algunas dificultades que me llevó bastante tiempo resolver. Dado que creo que al final el proceso es sencillo si se siguen los pasos correctamente h... [Más]

Efectuar la validación de varios formularios por separado en ASP.NET Web Forms

Efectuar la validación de varios formularios por separado en ASP.NET Web Forms
Hoy un truco rápido de principiante... Los grupos de validación surgen para suplir una limitación de los formularios HTML dentro de los formularios Web de ASP.NET. Y es que, por el propio modo de funcionar de los Web Forms, cada página ASPX sólo puede tener un único formulario (en el sentido de que no pueden disponer de más de una etiqueta <form> de HTML). Por ello, si realmente quieres tener en tu página un par de formularios colocados (por ejemplo, uno para darse de alta y otro para hacer login en tu sitio web), realmente sólo existe un único <form> por debajo. Lo normal es agrupar los controles dentro de un panel  para que visualmente se vean separados, y para que se comporten como si realmente fueran dos formularios independientes, las validaciones se hacen de forma separada también. Para conseguirlo se utiliza la propiedad ValidationGroup de los controles así como el control ValidationSummary. Ésta nos permite asociar la validación de un determinado control a un... [Más]

Simular notificaciones PUSH en una página Web

Simular notificaciones PUSH en una página Web
En mi último post describía la arquitectura que utilizan tanto iPhone como Windows Phone 7 para enviar notificaciones PUSH desde aplicaciones externas a los usuarios de los teléfonos. La comunicación entre el dispositivo y el servicio de notificaciones se basaba en una conexión “raw” permanentemente abierta entre ambos. Pero ¿cómo podemos simular algo así en una página Web? Hace poco un alumno de mi curso de preparación del examen 70-515 de desarrollo Web con tecnologías Microsoft, me preguntaba acerca de esta cuestión. En concreto la pregunta iba sobre sobre cómo conseguir el efecto de actualización automática de información que consiguen algunas páginas (como las de apuestas o de información bursátil) en las que el servidor envía información a los clientes sin que haya –aparentemente- una petición explícita... [Más]

Este soy yo y este es mi blog técnico, dedicado al software y a la programación.

¡Sígueme en Twitter!

Mis otros blogs

- JM Alarcón @ campusMVP.es
Contenido técnico en español orientado a desarrolladores
- JMAlarcon.es
Blog personal no técnico: sociedad, innovación, empresa...

Krasis

- campusMVP.es:
Los mejores cursos online de programación en español

- SELF LMS:
La plataforma de elearning más potente del mercado.

Histórico