-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Traducción del archivo 'authentication.rst' y mejoras en el 'readme' #6
base: master
Are you sure you want to change the base?
Changes from all commits
5b9995d
fcb25d7
c9212fd
0483e25
56ba3bb
43d6783
a686bf8
63980bf
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,33 +3,42 @@ | |
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 | ||
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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @talueses "Considérelos" (con acento en la é) |
||
lectura.** | ||
|
||
Al incorporarse en el proceso de traducción por favor agregue su nombre en | ||
el siguiente título. | ||
el siguiente apartado. | ||
|
||
|
||
## Colaboradores | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. | ||
|
||
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. | ||
Es tiempo de agregar | ||
:ref:`seguridad <security_chapter>` 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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @talueses "Obtén" (con acento en la é) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. De hecho, en la lista casi todos los verbos están en infinitivo, quizás deberías cambiar Obten por Obtener |
||
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: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @talueses En esta oración "éste" no se acentúa porque es un adjetivo demostrativo |
||
:ref:`AuthTktAuthenticationPolicy <authentication_module>`. | ||
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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @talueses ¿procese o procesa? |
||
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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @talueses Debería ser "escoger" en lugar de "escoher". Y "como" debería llevar acento en la o, "cómo" |
||
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 <authentication_module>`. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @talueses Quizás se pueda redactar un poco mejor este párrafo para mejor comprensión. Sugiero algo como:
También el gerundio de requerir es requiriendo, no 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: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @talueses La expresión |
||
``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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @talueses Me parece que debería ser Si no, porque sino es una contraposición a un concepto afirmativo |
||
la pantalla de inicio de sesión. Cómo sabe Pyramid cuál es la página de inicio | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @talueses Falta el signo de interrogación de apertura |
||
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``? | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @talueses También falta el signo de interrogación de apertura |
||
|
||
#. 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? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@talueses "Esto" no se acentúa