38
Componentes de Componentes de ASP.NET ASP.NET Leonardo Diez Dolinski Leonardo Diez Dolinski Servicios Profesionales Servicios Profesionales Danysoft Danysoft

Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Embed Size (px)

Citation preview

Page 1: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Componentes deComponentes de

ASP.NETASP.NETLeonardo Diez DolinskiLeonardo Diez DolinskiServicios ProfesionalesServicios ProfesionalesDanysoftDanysoft

Page 2: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

OrdenOrden deldel díadía

Funcionamiento internoFuncionamiento interno

ConfiguraciónConfiguración

SeguridadSeguridad

Manejo de estadoManejo de estado

Page 3: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Generación de una página .aspxGeneración de una página .aspx

Enviar

<HTML><HEAD> <TITLE>Mi página</TITLE></HEAD><BODY> <FORM runat="server" id="WebForm1"> <INPUT type="text" id="nombre" runat="server"> <asp:TextBox id="apellidos" runat="server"></asp:TextBox> <asp:Button id="enviar" Text="enviar" runat="server"></asp:Button> </FORM></BODY></HTML>

Page 4: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Generación de una página .aspxGeneración de una página .aspx

<HTML><HEAD> <TITLE>Mi página</TITLE></HEAD><BODY> <FORM runat="server" id="WebForm1"> <INPUT type="text" id="nombre" runat="server"> <asp:TextBox id="apellidos" runat="server"></asp:TextBox> <asp:Button id="enviar" runat="server"></asp:Button> </FORM></BODY></HTML>

Objeto página

Controls

<HTML><HEAD> <TITLE>Mi página</TITLE></HEAD><BODY>

HtmlGeneric

HtmlGeneric

<FORM runat="server" id="WebForm1">

</FORM>

HtmlForm

</BODY></HTML>

<asp:TextBox id="apellidos" runat="server"></asp:TextBox> HtmlInput

TextBox

<INPUT type="text" id="nombre" runat="server">

<asp:Button id="enviar" runat="server"></asp:Button>

Button

Page 5: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Generación de una página .aspxGeneración de una página .aspx

Objeto página

Controls

HtmlGeneric

HtmlGeneric

HtmlForm

HtmlInput

TextBox

<HTML><HEAD> <TITLE>Mi página</TITLE></HEAD><BODY>

</BODY></HTML>

<FORM action="...>

</FORM>

<INPUT type="text" name="nombre"...>

<INPUT type="text" name="apellidos"...>

Button <INPUT type="button" name="enviar"...>

Page 6: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

PostBackPostBack

Objeto página

Controls

HtmlGeneric

HtmlGeneric

HtmlForm

HtmlInput

TextBox

Button

POST WebForm1.aspx

nombre=Leonardoapellidos=Diez...

nombre.Text = "Leonardo"

apellidos.Text = "Diez"

eLeonardo

Diez

enviar

Page 7: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

ViewStateViewState

...apellidos.BackColor = Color.Blue...

Objeto página

Controls

HtmlGeneric

HtmlGeneric

HtmlForm

HtmlInput

TextBox

<FORM action="...> <INPUT type="hidden“ name="__ViewState“ value=“4fwe..."> ... ... </FORM>

ENCODEButton

Page 8: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

ViewStateViewState

POST WebForm1.aspx

...__ViewState=4fwe......

Objeto página

Controls

HtmlGeneric

HtmlGeneric

HtmlForm

HtmlInput

TextBoxapellidos.BackColor = Color.BlueDECODE

eLeonardo

Diez

enviar

Page 9: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

EventosEventos

Objeto página

Controls

HtmlGeneric

HtmlGeneric

HtmlForm

HtmlInput

TextBox

Button

eLeonardo

Diez

enviar

POST WebForm1.aspx

...enviar=enviar

enviar.click

Page 10: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

OrdenOrden deldel díadía

Funcionamiento internoFuncionamiento interno

ConfiguraciónConfiguración

SeguridadSeguridad

Manejo de estadoManejo de estado

Page 11: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

ConfiguraciónConfiguración

A través de ficheros de configuraciónA través de ficheros de configuraciónFormato XML y extensión .configFormato XML y extensión .configFácil mantenimiento y despliegueFácil mantenimiento y despliegue

Diferentes alcancesDiferentes alcancesToda la máquina (Directorio [windows]\Toda la máquina (Directorio [windows]\Microsoft.NET)Microsoft.NET)Aplicación de escritorioAplicación de escritorioAplicación y directorios webAplicación y directorios web

Organización jerárquicaOrganización jerárquicaAlcance inferior sobrescribe alcance superiorAlcance inferior sobrescribe alcance superiorAlcance superior puede fijar valoresAlcance superior puede fijar valores

Page 12: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Configuración de máquinaConfiguración de máquina

Fichero machine.configFichero machine.config

Dentro del directorio de WindowsDentro del directorio de Windows

Establece los valores predeterminados para Establece los valores predeterminados para todas las aplicaciones webtodas las aplicaciones web

Seguimiento: DeshabilitadoSeguimiento: Deshabilitado

Máx. tiempo de ejecución: 90 segundosMáx. tiempo de ejecución: 90 segundos

Manejo de sesiones: Activo, en procesoManejo de sesiones: Activo, en proceso

Autenticación: Permitir usuarios anónimosAutenticación: Permitir usuarios anónimos

Soporte multi-CPU: DeshabilitadoSoporte multi-CPU: Deshabilitado

Page 13: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Configuración de aplicaciones Configuración de aplicaciones webweb

Fichero web.configFichero web.config

Almacena la mayoría de las opciones de Almacena la mayoría de las opciones de configuraciónconfiguración

Sobrescribe algunos valores de machine.configSobrescribe algunos valores de machine.config

Añade nuevas configuracionesAñade nuevas configuraciones

Los cambios toman efecto inmediatamenteLos cambios toman efecto inmediatamenteReinicia la aplicaciónReinicia la aplicación

Fácil despliegueFácil despliegueSe distribuye con el sitioSe distribuye con el sitio

Casi no es necesaria la base de datos de IISCasi no es necesaria la base de datos de IIS

Page 14: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Páginas de erroresPáginas de errores

Permite redirigir la ejecución a otra página, Permite redirigir la ejecución a otra página, según el error ocurridosegún el error ocurrido

<customErrors mode="On"><customErrors mode="On"><error statusCode="404" <error statusCode="404"

redirect="errorpage404.aspx" />redirect="errorpage404.aspx" /></customErrors></customErrors>

<customErrors mode="RemoteOnly"><customErrors mode="RemoteOnly"><error statusCode="404" <error statusCode="404"

redirect="errorpage404.aspx" />redirect="errorpage404.aspx" /></customErrors></customErrors>

Page 15: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Configuración personalizadaConfiguración personalizada

Es posible añadir valores de configuración Es posible añadir valores de configuración específicos de la aplicación al fichero de específicos de la aplicación al fichero de configuraciónconfiguración

<configuration><configuration><appSettings><appSettings>

<add key="Conexion" <add key="Conexion" value="…" />value="…" />

</appSettings></appSettings></configuration></configuration>

Acceso desde el códigoAcceso desde el códigocn = cn = ConfigurationSettings.AppSettings("Conexion")ConfigurationSettings.AppSettings("Conexion")

Page 16: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Configuración especialConfiguración especial

Es posible añadir configuración específica para determinados Es posible añadir configuración específica para determinados ficheros o directorios mediante el uso del tag <location>ficheros o directorios mediante el uso del tag <location><configuration><configuration>

<system.web><system.web>......</system.web></system.web><location path=“/admin”><location path=“/admin”>

<system.web><system.web><security><security>

<authorization><authorization><allow roles=“Admins”><allow roles=“Admins”>

</authorization></authorization></security></security>

</system.web></system.web></location></location>

</configuration></configuration>

Page 17: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

OrdenOrden deldel díadía

Funcionamiento internoFuncionamiento interno

ConfiguraciónConfiguración

SeguridadSeguridad

Manejo de estadoManejo de estado

Page 18: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Elementos de seguridadElementos de seguridad

AutenticaciónAutenticación

AutorizaciónAutorización

ImpersonaciónImpersonación

Page 19: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

AutenticaciónAutenticación

Identificación de la persona (o sistema) Identificación de la persona (o sistema) que desea acceder a un sistemaque desea acceder a un sistema

Tipos de autenticación dadas por Tipos de autenticación dadas por ASP.NETASP.NET

WindowsWindows

FormulariosFormularios

PassportPassport

Page 20: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Autenticación de WindowsAutenticación de Windows

Se habilita para ASP.NET a través del Se habilita para ASP.NET a través del fichero de configuraciónfichero de configuración

<security><security><authentication <authentication

mode="Windows" />mode="Windows" /></security></security>

Page 21: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Autenticación de WindowsAutenticación de Windows

Se configura a Se configura a través de la consola través de la consola de administración de administración de Servicios de de Servicios de Internet Information Internet Information ServerServer

Page 22: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Autenticación de WindowsAutenticación de Windows

Es posible acceder al nombre del Es posible acceder al nombre del usuario autenticadousuario autenticado

string usuario = User.Identity.Name;string usuario = User.Identity.Name;

Los grupos de Windows son Los grupos de Windows son automáticamente vinculados a Roles automáticamente vinculados a Roles ASP.NETASP.NET

if (User.IsInRole(“Administrators”)) ...if (User.IsInRole(“Administrators”)) ...

Page 23: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Autenticación de formulariosAutenticación de formularios

El sitio web es el responsable de la seguridad, El sitio web es el responsable de la seguridad, no IISno IIS

Configurar IIS para permitir acceso anónimoConfigurar IIS para permitir acceso anónimo

Fuerza a los usuarios a autenticarse a través Fuerza a los usuarios a autenticarse a través de un formulariode un formulario

<authentication mode="Forms"><authentication mode="Forms"><forms loginUrl=“Login.aspx“ /><forms loginUrl=“Login.aspx“ />

</authentication></authentication>

Cualquier usuario anónimo que intente acceder a Cualquier usuario anónimo que intente acceder a un recurso protegido será enviado a Login.aspxun recurso protegido será enviado a Login.aspx

Page 24: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Autenticación de formulariosAutenticación de formularios

Crear un formulario de ingresoCrear un formulario de ingresoObtener nombre de usuario y contraseñaObtener nombre de usuario y contraseña

Validar datos enviadosValidar datos enviados

Método FormAuthentication.RedirectFromLoginPageMétodo FormAuthentication.RedirectFromLoginPageMarca al usuario como autenticadoMarca al usuario como autenticado

Lleva al usuario a la página que ha pedido originalmenteLleva al usuario a la página que ha pedido originalmente

Si el usuario ha pedido la página de ingreso, lo redirige a la Si el usuario ha pedido la página de ingreso, lo redirige a la página de inicio de la aplicación webpágina de inicio de la aplicación web

La cookie de autenticación puede ser persistenteLa cookie de autenticación puede ser persistente

Existe la posibilidad de realizar cada paso por Existe la posibilidad de realizar cada paso por separadoseparado

Page 25: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Autenticación de formulariosAutenticación de formularios

Para sitios simples, se puede almacenar Para sitios simples, se puede almacenar los nombres de usuarios y contraseñas los nombres de usuarios y contraseñas en el fichero de configuraciónen el fichero de configuración

<credentials passwordFormat="clear"><credentials passwordFormat="clear"><user name="MSDN" <user name="MSDN"

password="online" />password="online" /><user name="Guest" <user name="Guest"

password="guest" />password="guest" /></credentials></credentials>

Método Método FormAuthentication.AuthenticateFormAuthentication.AuthenticateMétodo Método FormAuthentication.HashPasswordForStoringInConfigFileFormAuthentication.HashPasswordForStoringInConfigFile

Page 26: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

AutorizaciónAutorización

Determina si el usuario autenticado tiene permisos Determina si el usuario autenticado tiene permisos para acceder a un recursopara acceder a un recurso

Se especifica en el fichero de configuraciónSe especifica en el fichero de configuración<authorization><authorization>

<allow <allow users="usuarios separados por comas" users="usuarios separados por comas" roles="roles separados por comas" roles="roles separados por comas" verbs="verbos separados por comas" />verbs="verbos separados por comas" />

<deny <deny users="usuarios separados por comas" users="usuarios separados por comas" roles="roles separados por comas" roles="roles separados por comas" verbs="verbos separados por comas/>verbs="verbos separados por comas/>

</authorization> </authorization>

Existen símbolos especialesExisten símbolos especiales* para representar a todos los usuarios* para representar a todos los usuarios

? para representar usuarios anónimos? para representar usuarios anónimos

Page 27: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

ImpersonaciónImpersonación

Permite representar al usuario de la Permite representar al usuario de la aplicación con un usuario de Windowsaplicación con un usuario de Windows

Autenticación de WindowsAutenticación de Windows<identity impersonate="true" /><identity impersonate="true" />

Independiente del modo de Independiente del modo de autenticaciónautenticación

<identity impersonate="true"<identity impersonate="true" name=“usuario" name=“usuario" password="password" /> password="password" />

Page 28: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

DemoDemo

Implementación de la seguridadImplementación de la seguridad

Page 29: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

OrdenOrden deldel díadía

Funcionamiento internoFuncionamiento interno

ConfiguraciónConfiguración

SeguridadSeguridad

Manejo de estadoManejo de estado

Page 30: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Manejo de estadoManejo de estado

Una aplicación web se ejecuta en un Una aplicación web se ejecuta en un medio sin estadomedio sin estado

Necesidad de tener una forma de Necesidad de tener una forma de “recordar” datos = mantener estado“recordar” datos = mantener estado

Page 31: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Estado de aplicaciónEstado de aplicación

Colecciones de valores accesibles desde Colecciones de valores accesibles desde cualquier página y sesióncualquier página y sesión

Objeto ApplicationObjeto ApplicationApplication["NombreEmpresa"]Application["NombreEmpresa"]

Se pueden bloquear o desbloquear el Se pueden bloquear o desbloquear el accesoacceso

Métodos Lock y UnlockMétodos Lock y Unlock

Objeto CacheObjeto CachePermite que los datos expirenPermite que los datos expiren

Page 32: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Estado de sesiónEstado de sesión

Colección de valores accesibles desde Colección de valores accesibles desde cualquier páginacualquier página

Objeto SessionObjeto Session

Una colección por usuarioUna colección por usuario

Session["UserId"]Session["UserId"]

Page 33: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Sesiones de ASP.NETSesiones de ASP.NET

Posibilidad de no usar cookiesPosibilidad de no usar cookies

Diferentes modosDiferentes modosInProcInProc

Similar a ASPSimilar a ASP

Almacena las sesiones en la memoria del servidor webAlmacena las sesiones en la memoria del servidor web

StateServerStateServerLas sesiones son almacenadas en memoria en un servicio Las sesiones son almacenadas en memoria en un servicio separadoseparado

El servicio puede estar en un servidor remotoEl servicio puede estar en un servidor remoto

SQLServerSQLServerLas sesiones son almacenadas en una base de datos de Las sesiones son almacenadas en una base de datos de SQL ServerSQL Server

Page 34: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Sesiones de ASP.NETSesiones de ASP.NET

Configuración en web.configConfiguración en web.config<sessionState<sessionState

mode=“Off|InProc|StateServer|SQLServer”mode=“Off|InProc|StateServer|SQLServer”cookieless=“false”cookieless=“false”timeout=“20”timeout=“20”sqlConnectionString=“data source=127.0.0.1; sqlConnectionString=“data source=127.0.0.1;

user user id=sa;password=sa” id=sa;password=sa” stateConnectionString="tcpip=127.0.0.1:42424" />stateConnectionString="tcpip=127.0.0.1:42424" />

Page 35: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Sesiones de ASP.NETSesiones de ASP.NET

Para configurar SQL Server para almacenar Para configurar SQL Server para almacenar información de estados se debe ejecutar un información de estados se debe ejecutar un pequeño script en el servidorpequeño script en el servidor

InstallSQLState.sql puede ser encontrado en InstallSQLState.sql puede ser encontrado en [sysdrive]\winnt\Microsoft.NET\Framework\[sysdrive]\winnt\Microsoft.NET\Framework\[version][version]

Crea lo siguiente en el servidorCrea lo siguiente en el servidorUna base de datos llamada ASPStateUna base de datos llamada ASPStateProcedimientos almacenadosProcedimientos almacenadosTablas en TempDB para almacenar los datos de los Tablas en TempDB para almacenar los datos de los estados.estados.

Para desinstalar ejecutar el script Para desinstalar ejecutar el script UninstallSQLState.sqlUninstallSQLState.sql

Page 36: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Preguntas y respuestasPreguntas y respuestas

Page 37: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

ParaPara obtenerobtener másmás informacióninformación

eRevista DanysofteRevista Danysoft

Webs DanysoftWebs Danysoft

Area Formación yArea Formación yS.ProfesionalesS.Profesionales

DVD DanysoftDVD Danysoft

Libros DanypressLibros Danypress

[email protected]@danysoft.com

Page 38: Componentes de ASP.NET Leonardo Diez Dolinski Servicios Profesionales Danysoft

Gracias por su asistenciaGracias por su asistencia