From 5b9995df6c2fe224873cae5cd52e35fd5f56a36c Mon Sep 17 00:00:00 2001 From: Jin Kadada Date: Fri, 11 Sep 2015 00:28:33 -0430 Subject: [PATCH 1/8] =?UTF-8?q?Mejoras=20en=20la=20redacci=C3=B3n=20y=20or?= =?UTF-8?q?tograf=C3=ADa.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index d9b47b6..847af38 100644 --- a/README.md +++ b/README.md @@ -3,21 +3,23 @@ La mejor forma para iniciarse con el Framework Web [Pyramid](http://docs.pylonsproject.org/en/latest/docs/pyramid.html) es haciendo un recorrido por las funcionalidades más resaltantes del mismo. Este repositorio es para mantener una traducción -*no oficial* del [Quick Tutorial](http://docs.pylonsproject.org/projects/pyramid/en/latest/quick_tutorial/index.html) incluido en la documentación +*no oficial* del [Quick Tutorial](http://docs.pylonsproject.org/projects/pyramid/en/latest/quick_tutorial/index.html) incluído en la documentación del Framework. ## Indicaciones para seguir el tutorial *TODO* -## Indicaciones para colaborar con traducción +## Indicaciones para colaborar con traducción -Para participar de la traducción por favor revise en el documento de -avances que porciones se encuentran traducidas. Coloque en la sección de -[Issues](https://github.com/pyve/Pyramid-Tutorial-Rapido/issues) el -título que va a traducir. Haga un Fork del repositorio y proceda a traducir -la porción que indicó en el ticket. Una vez finalizado proceda a hacer un -Pull Request para que otro colaborador pueda hacer una revisión rápida de +Para participar de la traducción por favor; +1.- Haga un Fork del repositorio. +2.- Revise en el documento de avances que porciones se encuentran traducidas. +3.- Coloque en la sección de [Issues](https://github.com/pyve/Pyramid-Tutorial-Rapido/issues) el +título que va a traducir. +4.- Proceda a traducir la porción que indicó en el ticket. +5.- Devuelva los cambios vía Pull Request. +Ésto para que otro colaborador pueda hacer una revisión rápida de tradujo. En caso de realizar una revisión global de ortografía o redacción por favor @@ -25,11 +27,11 @@ indicarlo en el ticket nombrando a las personas que estén trabajando simultaneamente con usted en algún archivo, de modo que estén concientes de posible cambios en sus contenidos. -Por favor no cambie los archivos en inglés, considerelos como de sólo -lectura. +**Por favor no cambie los archivos en inglés, considerelos como de sólo +lectura.** Al incorporarse en el proceso de traducción por favor agregue su nombre en -el siguiente título. +el siguiente apartado. ## Colaboradores From fcb25d7fc51a6eff5d0a3f051e35463c6d01b907 Mon Sep 17 00:00:00 2001 From: Jin Kadada Date: Fri, 11 Sep 2015 02:16:01 -0430 Subject: [PATCH 2/8] =?UTF-8?q?Mejoras=20en=20la=20ortograf=C3=ADa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 847af38..449631d 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,12 @@ del Framework. ## Indicaciones para colaborar con traducción Para participar de la traducción por favor; -1.- Haga un Fork del repositorio. -2.- Revise en el documento de avances que porciones se encuentran traducidas. -3.- Coloque en la sección de [Issues](https://github.com/pyve/Pyramid-Tutorial-Rapido/issues) el +1. Haga un Fork del repositorio. +2. Revise en el documento de avances que porciones se encuentran traducidas. +3. Coloque en la sección de [Issues](https://github.com/pyve/Pyramid-Tutorial-Rapido/issues) el título que va a traducir. -4.- Proceda a traducir la porción que indicó en el ticket. -5.- Devuelva los cambios vía Pull Request. +4. Proceda a traducir la porción que indicó en el ticket. +5. Devuelva los cambios vía Pull Request. Ésto para que otro colaborador pueda hacer una revisión rápida de tradujo. From c9212fd185be0801f7bf34d2383e180b5b5ab58f Mon Sep 17 00:00:00 2001 From: Jin Kadada Date: Fri, 11 Sep 2015 02:19:27 -0430 Subject: [PATCH 3/8] =?UTF-8?q?Agregando=20la=20traducci=C3=B3n.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "tutorial_rapido/autenticaci\303\263n.rst" | 139 +++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 "tutorial_rapido/autenticaci\303\263n.rst" diff --git "a/tutorial_rapido/autenticaci\303\263n.rst" "b/tutorial_rapido/autenticaci\303\263n.rst" new file mode 100644 index 0000000..a033b5d --- /dev/null +++ "b/tutorial_rapido/autenticaci\303\263n.rst" @@ -0,0 +1,139 @@ +============================== +20: Logueos con autenticación +============================== + +Una vista para ingresar que autentifica un nombre de usuario/contraseña contra una lista de +usuarios. + +Background +========== + +La mayoría de las aplicaciones web tienen direcciones URL que permiten a los usuarios añadir/editar/borrar +contenido a través de un navegador web. +Es tiempo de agregar +:ref:`seguridad ` a la aplicación. +En este primer paso, nos vamos a introducir en la autenticación. +Es decir, el registro y cierre de sesión de los usuarios conectados +utilizando las instalaciones Pyramid's de forma fácil. + + +En el siguiente paso nos vamos a introducir en la protección de recursos +con declaraciones de seguridad para la autorización. + +Objetivos +========== + +- Introducción de los conceptos de autenticación + +- Crear vistas para ingresar/salir + + +Pasos +===== + +#. Vamos a utilizar la clase "vista" como punto de partida: + + .. code-block:: bash + + $ cd ..; cp -r view_classes authentication; cd authentication + $ $VENV/bin/python setup.py develop + +#. Colocar el hash de seguridad en el archivo ``authentication/development.ini`` + de configuración como ``tutorial.secret`` en vez de colocarlo directo en + el código: + + .. literalinclude:: authentication/development.ini + :language: ini + :linenos: + +#. Obten la autenticación (y por ahora, las políticas de autorización) y la ruta + de ingreso dentro de :term:`configurator` en + ``authentication/tutorial/__init__.py``: + + .. literalinclude:: authentication/tutorial/__init__.py + :linenos: + +#. Crear un módulo: ``authentication/tutorial/security.py`` que puede encontrar +    nuestra información del usuario al proporcionar la llamada a la política + de autenticación + + .. literalinclude:: authentication/tutorial/security.py + :linenos: + +#. Actualizar la vista en: ``authentication/tutorial/views.py``: + + .. literalinclude:: authentication/tutorial/views.py + :linenos: + +#. Agregar una plantilla de ingreso en: ``authentication/tutorial/login.pt``: + + .. literalinclude:: authentication/tutorial/login.pt + :language: html + :linenos: + +#. Proporcionar un inicio de sesión y salida del sistema en: ``authentication/tutorial/home.pt`` + + .. literalinclude:: authentication/tutorial/home.pt + :language: html + :linenos: + +#. Ejecuta tu aplicación Pyramid con: + + .. code-block:: bash + + $ $VENV/bin/pserve development.ini --reload + +#. Abre http://localhost:6543/ en tu navegador. + +#. Click en "Inicio de sesión". + +#. Envíe el formulario de inicio de sesión con el nombre de usuario y la contraseña + ``editor``. + +#. Notar que el botón "Inicio de sesión" cambió a "Salir". + +#. Click en "Salir" link. + +Análisis +======== + +A diferencia de muchos frameworks web, Pyramid incluye un modelo de seguridad +incorporada pero que es opcional para la autenticación y autorización. Este +tipo de seguridad en el sistema está destinado a ser flexible y apoyar a +muchas necesidades. En este modelo de seguridad, la autenticación (quién eres) +y la autorización (qué tienes permitido hacer) no son conectable, pero se pueden +desvincular. +Pero aprenderemos un paso a la vez, vamos a proveer un sistema con inicio y salida +del mismo. + +En éste ejemplo se optó por usar el paquete: +:ref:`AuthTktAuthenticationPolicy `. +Lo activamos en nuestra configuración y proporcionamos un +"ticket-signing" en nuestro archivo INI. + +Nuestra clase de la "vista" nos extendió un inicio de sesión. +Cuando llegamos a ella, a través de un GET, ella retorna +un formulario de inicio de sesión. Al llegar a través de POST, se procese el +nombre de usuario y la contraseña contra el "groupfinder" que debe estar +registrada en la configuración. + +En nuestra plantilla, buscamos el valor `logged_in`` de la clase "vista" +Usamos ésto para saber si hay un usuario logueado, de haberlo. +En la plantilla nosotros podemos escoher como mostrar el enlace +de inicio de sesión para los usuarios anónimos o el enlace de salida +para los usuarios logueados. + + +Crédito extra +============ + +#. ¿Cuál es la diferencia entre un usuario y un administrador? + +#. ¿Puedo usar una base de datos detrás de mi ``groupfinder`` para buscar los administradores? + +#. Una vez se inicia sesión, ¿toda la información centrada del usuario puede atascarse +    en cada solicitud? Usar ``import pdb; pdb.set_trace()`` para responder + ésto. + +.. seealso:: Vea también :ref:`security_chapter`, + :ref:`AuthTktAuthenticationPolicy `. \ No newline at end of file From 0483e2516d08575458b313f05215e8b51b196e49 Mon Sep 17 00:00:00 2001 From: Jin Kadada Date: Fri, 11 Sep 2015 02:21:20 -0430 Subject: [PATCH 4/8] Arreglando el markdown. --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 449631d..6186e77 100644 --- a/README.md +++ b/README.md @@ -13,12 +13,19 @@ del Framework. ## Indicaciones para colaborar con traducción Para participar de la traducción por favor; + 1. Haga un Fork del repositorio. + 2. Revise en el documento de avances que porciones se encuentran traducidas. + 3. Coloque en la sección de [Issues](https://github.com/pyve/Pyramid-Tutorial-Rapido/issues) el título que va a traducir. + 4. Proceda a traducir la porción que indicó en el ticket. + 5. Devuelva los cambios vía Pull Request. + + Ésto para que otro colaborador pueda hacer una revisión rápida de tradujo. From 56ba3bb48b03963f09ca8dac5a7c4ae7ca21993a Mon Sep 17 00:00:00 2001 From: Jin Kadada Date: Sat, 26 Sep 2015 23:19:31 -0430 Subject: [PATCH 5/8] =?UTF-8?q?Agregando=20la=20traducci=C3=B3n=20al=20arc?= =?UTF-8?q?hivo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tutorial_rapido/authentication.rst | 139 +++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 tutorial_rapido/authentication.rst diff --git a/tutorial_rapido/authentication.rst b/tutorial_rapido/authentication.rst new file mode 100644 index 0000000..a033b5d --- /dev/null +++ b/tutorial_rapido/authentication.rst @@ -0,0 +1,139 @@ +============================== +20: Logueos con autenticación +============================== + +Una vista para ingresar que autentifica un nombre de usuario/contraseña contra una lista de +usuarios. + +Background +========== + +La mayoría de las aplicaciones web tienen direcciones URL que permiten a los usuarios añadir/editar/borrar +contenido a través de un navegador web. +Es tiempo de agregar +:ref:`seguridad ` a la aplicación. +En este primer paso, nos vamos a introducir en la autenticación. +Es decir, el registro y cierre de sesión de los usuarios conectados +utilizando las instalaciones Pyramid's de forma fácil. + + +En el siguiente paso nos vamos a introducir en la protección de recursos +con declaraciones de seguridad para la autorización. + +Objetivos +========== + +- Introducción de los conceptos de autenticación + +- Crear vistas para ingresar/salir + + +Pasos +===== + +#. Vamos a utilizar la clase "vista" como punto de partida: + + .. code-block:: bash + + $ cd ..; cp -r view_classes authentication; cd authentication + $ $VENV/bin/python setup.py develop + +#. Colocar el hash de seguridad en el archivo ``authentication/development.ini`` + de configuración como ``tutorial.secret`` en vez de colocarlo directo en + el código: + + .. literalinclude:: authentication/development.ini + :language: ini + :linenos: + +#. Obten la autenticación (y por ahora, las políticas de autorización) y la ruta + de ingreso dentro de :term:`configurator` en + ``authentication/tutorial/__init__.py``: + + .. literalinclude:: authentication/tutorial/__init__.py + :linenos: + +#. Crear un módulo: ``authentication/tutorial/security.py`` que puede encontrar +    nuestra información del usuario al proporcionar la llamada a la política + de autenticación + + .. literalinclude:: authentication/tutorial/security.py + :linenos: + +#. Actualizar la vista en: ``authentication/tutorial/views.py``: + + .. literalinclude:: authentication/tutorial/views.py + :linenos: + +#. Agregar una plantilla de ingreso en: ``authentication/tutorial/login.pt``: + + .. literalinclude:: authentication/tutorial/login.pt + :language: html + :linenos: + +#. Proporcionar un inicio de sesión y salida del sistema en: ``authentication/tutorial/home.pt`` + + .. literalinclude:: authentication/tutorial/home.pt + :language: html + :linenos: + +#. Ejecuta tu aplicación Pyramid con: + + .. code-block:: bash + + $ $VENV/bin/pserve development.ini --reload + +#. Abre http://localhost:6543/ en tu navegador. + +#. Click en "Inicio de sesión". + +#. Envíe el formulario de inicio de sesión con el nombre de usuario y la contraseña + ``editor``. + +#. Notar que el botón "Inicio de sesión" cambió a "Salir". + +#. Click en "Salir" link. + +Análisis +======== + +A diferencia de muchos frameworks web, Pyramid incluye un modelo de seguridad +incorporada pero que es opcional para la autenticación y autorización. Este +tipo de seguridad en el sistema está destinado a ser flexible y apoyar a +muchas necesidades. En este modelo de seguridad, la autenticación (quién eres) +y la autorización (qué tienes permitido hacer) no son conectable, pero se pueden +desvincular. +Pero aprenderemos un paso a la vez, vamos a proveer un sistema con inicio y salida +del mismo. + +En éste ejemplo se optó por usar el paquete: +:ref:`AuthTktAuthenticationPolicy `. +Lo activamos en nuestra configuración y proporcionamos un +"ticket-signing" en nuestro archivo INI. + +Nuestra clase de la "vista" nos extendió un inicio de sesión. +Cuando llegamos a ella, a través de un GET, ella retorna +un formulario de inicio de sesión. Al llegar a través de POST, se procese el +nombre de usuario y la contraseña contra el "groupfinder" que debe estar +registrada en la configuración. + +En nuestra plantilla, buscamos el valor `logged_in`` de la clase "vista" +Usamos ésto para saber si hay un usuario logueado, de haberlo. +En la plantilla nosotros podemos escoher como mostrar el enlace +de inicio de sesión para los usuarios anónimos o el enlace de salida +para los usuarios logueados. + + +Crédito extra +============ + +#. ¿Cuál es la diferencia entre un usuario y un administrador? + +#. ¿Puedo usar una base de datos detrás de mi ``groupfinder`` para buscar los administradores? + +#. Una vez se inicia sesión, ¿toda la información centrada del usuario puede atascarse +    en cada solicitud? Usar ``import pdb; pdb.set_trace()`` para responder + ésto. + +.. seealso:: Vea también :ref:`security_chapter`, + :ref:`AuthTktAuthenticationPolicy `. \ No newline at end of file From 43d6783f44150446db23a6774fad8cda44c33d29 Mon Sep 17 00:00:00 2001 From: Jin Kadada Date: Sat, 26 Sep 2015 23:19:49 -0430 Subject: [PATCH 6/8] =?UTF-8?q?Agregando=20la=20traducci=C3=B3n=20al=20arc?= =?UTF-8?q?hivo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tutorial_rapido/authorization.rst | 118 ++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 tutorial_rapido/authorization.rst diff --git a/tutorial_rapido/authorization.rst b/tutorial_rapido/authorization.rst new file mode 100644 index 0000000..feedc87 --- /dev/null +++ b/tutorial_rapido/authorization.rst @@ -0,0 +1,118 @@ +=========================================== +21: Proteger recursos con "Autorización" +=========================================== + +Asignar declaraciones de seguridad para recursos que describan los permisos +requeridos para realizar una operación. + +Fondo +========== + +Nuestra aplicación tendrá URLs que permitirán a través del navegador +al usuario agregar/editar/borrar contenido. Es tiempo de agregar seguridad +a la aplicación. Vamos a proteger nuestra vista de agregar/editar requeriendo +un inicio de sesión (nombre de usuario del ``editor`` y contraseña del +``editor``). Vamos a permitir que otras vistas continúen trabajando +sin una contraseña. + + +Objetivos +========== + +- Introducción a los conceptos de autenticación, autorización, +permiso, y listas de acceso de control(ACLs) en Pyramid. + +- Hacer un :term:`root factory` que retorne una instancia de nuestra +clase para la parte superior de la aplicación. + +- Asignar declaraciones de seguridad para nuestro recurso raíz + +- Agregar un permisos en una vista implicada. + +- Proveer un :term:`Forbidden view` para manejar las visitas a una +URL sin el permiso adecuado. + + +Pasos +===== + +#. Vamos a usar el paso de autenticación como nuestro punto de inicio: + + .. code-block:: bash + + $ cd ..; cp -r authentication authorization; cd authorization + $ $VENV/bin/python setup.py develop + +#. Comenzaremos por cambiar: ``authorization/tutorial/__init__.py`` para + especificar una raíz al :term:`configurator`: + + .. literalinclude:: authorization/tutorial/__init__.py + :linenos: + +#. Eso significa que tenemos que que vamos a implementar: + ``authorization/tutorial/resources.py`` + + .. literalinclude:: authorization/tutorial/resources.py + :linenos: + +#. Cambiar ``authorization/tutorial/views.py`` para requerir ``edit`` + permiso en la vista ``hello`` e implementar la prohibición en la vista: + + .. literalinclude:: authorization/tutorial/views.py + :linenos: + +#. Ejecuta tu aplicación Pyramid usando: + + .. code-block:: bash + + $ $VENV/bin/pserve development.ini --reload + +#. Abrir http://localhost:6543/ en el navegador. + +#. Si apareces con la sesión iniciada, click en el link "salir". + +#. Visita http://localhost:6543/howdy en una navegador. Se te pedirá + que inicies sesión + + +Análisis +======== + +Este simple tutorial puede reducirse a lo siguiente: + +- Una vista puede requerir un *permiso* (``edit``) + +- El contexto para nuestra vista (el ``Root``) tiene una lista de + acceso de control. (ACL) + +- Esta ACL dice que el permiso para ``edit`` está disponible en, ``Root`` + para el grupo ``group:editors`` *principal* + +- El registro ``groupfinder`` responderá si un usuario en particular + (``editor``) pertenece a un grupo en especial (``group:editors``) + +En resumen: ``hello`` requiere permisos para ``edit`` , ``Root`` dice el +``group:editors`` tiene permisos para ``edit``. + +Claro, esto solo aplica en: ``Root``. En otra parte del sitio +(a.k.a. *contexto*) podría tener un diferente ACL. + +Sino has iniciado sesión y visitas ``/howdy``, necesitarás hacerlo en +la pantalla de inicio de sesión. Cómo sabe Pyramid cuál es la página de inicio +de sesión? Nosotros explícitamente se lo dijimos en la vista ``login`` usando el +decorador ``@forbidden_view_config`` en dicha vista. + +Crédito extra +============ + +#. Tengo que poner un ``renderer`` en mi decorador ``@forbidden_view_config``? + +#. Tal vez le gustaría experimentar con no tener suficientes permisos + (forbidden) como para editar. ¿Cómo puedes hacer para cambiar ésto? + +#. Tal vez queremos almacenar declaraciones de seguridad en una base de datos y +    permitir la edición a través de un navegador. ¿Cómo puede hacerse esto? + +#. ¿Qué pasa si queremos diferentes declaraciones de seguridad en diferentes tipos de +    objetos? O en el mismo tipo de objetos, pero en diferentes partes de una +    Jerarquía URL? From a686bf875457962402a32c1aeca61b8c28eb5d42 Mon Sep 17 00:00:00 2001 From: Jin Kadada Date: Sat, 26 Sep 2015 23:26:38 -0430 Subject: [PATCH 7/8] =?UTF-8?q?Agregando=20la=20traducci=C3=B3n=20al=20arc?= =?UTF-8?q?hivo.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tutorial_rapido/authentication.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorial_rapido/authentication.rst b/tutorial_rapido/authentication.rst index a033b5d..280d61d 100644 --- a/tutorial_rapido/authentication.rst +++ b/tutorial_rapido/authentication.rst @@ -5,8 +5,8 @@ Una vista para ingresar que autentifica un nombre de usuario/contraseña contra una lista de usuarios. -Background -========== +Fondo +====== La mayoría de las aplicaciones web tienen direcciones URL que permiten a los usuarios añadir/editar/borrar contenido a través de un navegador web. From 63980bf3ce23b17dd9f5c7a3beefb86fb0217a6e Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 26 Sep 2015 23:29:26 -0430 Subject: [PATCH 8/8] =?UTF-8?q?Por=20estar=20el=20nombre=20del=20archivo?= =?UTF-8?q?=20en=20espa=C3=B1ol?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Españolete --- "tutorial_rapido/autenticaci\303\263n.rst" | 139 --------------------- 1 file changed, 139 deletions(-) delete mode 100644 "tutorial_rapido/autenticaci\303\263n.rst" diff --git "a/tutorial_rapido/autenticaci\303\263n.rst" "b/tutorial_rapido/autenticaci\303\263n.rst" deleted file mode 100644 index a033b5d..0000000 --- "a/tutorial_rapido/autenticaci\303\263n.rst" +++ /dev/null @@ -1,139 +0,0 @@ -============================== -20: Logueos con autenticación -============================== - -Una vista para ingresar que autentifica un nombre de usuario/contraseña contra una lista de -usuarios. - -Background -========== - -La mayoría de las aplicaciones web tienen direcciones URL que permiten a los usuarios añadir/editar/borrar -contenido a través de un navegador web. -Es tiempo de agregar -:ref:`seguridad ` a la aplicación. -En este primer paso, nos vamos a introducir en la autenticación. -Es decir, el registro y cierre de sesión de los usuarios conectados -utilizando las instalaciones Pyramid's de forma fácil. - - -En el siguiente paso nos vamos a introducir en la protección de recursos -con declaraciones de seguridad para la autorización. - -Objetivos -========== - -- Introducción de los conceptos de autenticación - -- Crear vistas para ingresar/salir - - -Pasos -===== - -#. Vamos a utilizar la clase "vista" como punto de partida: - - .. code-block:: bash - - $ cd ..; cp -r view_classes authentication; cd authentication - $ $VENV/bin/python setup.py develop - -#. Colocar el hash de seguridad en el archivo ``authentication/development.ini`` - de configuración como ``tutorial.secret`` en vez de colocarlo directo en - el código: - - .. literalinclude:: authentication/development.ini - :language: ini - :linenos: - -#. Obten la autenticación (y por ahora, las políticas de autorización) y la ruta - de ingreso dentro de :term:`configurator` en - ``authentication/tutorial/__init__.py``: - - .. literalinclude:: authentication/tutorial/__init__.py - :linenos: - -#. Crear un módulo: ``authentication/tutorial/security.py`` que puede encontrar -    nuestra información del usuario al proporcionar la llamada a la política - de autenticación - - .. literalinclude:: authentication/tutorial/security.py - :linenos: - -#. Actualizar la vista en: ``authentication/tutorial/views.py``: - - .. literalinclude:: authentication/tutorial/views.py - :linenos: - -#. Agregar una plantilla de ingreso en: ``authentication/tutorial/login.pt``: - - .. literalinclude:: authentication/tutorial/login.pt - :language: html - :linenos: - -#. Proporcionar un inicio de sesión y salida del sistema en: ``authentication/tutorial/home.pt`` - - .. literalinclude:: authentication/tutorial/home.pt - :language: html - :linenos: - -#. Ejecuta tu aplicación Pyramid con: - - .. code-block:: bash - - $ $VENV/bin/pserve development.ini --reload - -#. Abre http://localhost:6543/ en tu navegador. - -#. Click en "Inicio de sesión". - -#. Envíe el formulario de inicio de sesión con el nombre de usuario y la contraseña - ``editor``. - -#. Notar que el botón "Inicio de sesión" cambió a "Salir". - -#. Click en "Salir" link. - -Análisis -======== - -A diferencia de muchos frameworks web, Pyramid incluye un modelo de seguridad -incorporada pero que es opcional para la autenticación y autorización. Este -tipo de seguridad en el sistema está destinado a ser flexible y apoyar a -muchas necesidades. En este modelo de seguridad, la autenticación (quién eres) -y la autorización (qué tienes permitido hacer) no son conectable, pero se pueden -desvincular. -Pero aprenderemos un paso a la vez, vamos a proveer un sistema con inicio y salida -del mismo. - -En éste ejemplo se optó por usar el paquete: -:ref:`AuthTktAuthenticationPolicy `. -Lo activamos en nuestra configuración y proporcionamos un -"ticket-signing" en nuestro archivo INI. - -Nuestra clase de la "vista" nos extendió un inicio de sesión. -Cuando llegamos a ella, a través de un GET, ella retorna -un formulario de inicio de sesión. Al llegar a través de POST, se procese el -nombre de usuario y la contraseña contra el "groupfinder" que debe estar -registrada en la configuración. - -En nuestra plantilla, buscamos el valor `logged_in`` de la clase "vista" -Usamos ésto para saber si hay un usuario logueado, de haberlo. -En la plantilla nosotros podemos escoher como mostrar el enlace -de inicio de sesión para los usuarios anónimos o el enlace de salida -para los usuarios logueados. - - -Crédito extra -============ - -#. ¿Cuál es la diferencia entre un usuario y un administrador? - -#. ¿Puedo usar una base de datos detrás de mi ``groupfinder`` para buscar los administradores? - -#. Una vez se inicia sesión, ¿toda la información centrada del usuario puede atascarse -    en cada solicitud? Usar ``import pdb; pdb.set_trace()`` para responder - ésto. - -.. seealso:: Vea también :ref:`security_chapter`, - :ref:`AuthTktAuthenticationPolicy `. \ No newline at end of file