2009-09-19 17 views
5

Me gustaría preguntar cuál es la forma más común de manejar la seguridad basada en roles con Google App Engine, Python?Seguridad basada en roles con Google App Engine y Python

En la aplicación.yaml, está la sección de "inicio de sesión", pero los valores disponibles son solo "admin" y "necesarios".

¿Cómo maneja normalmente la seguridad basada en roles?

  • Crear el modelo con dos tablas: Funciones y UserRoles
  • Los valores de importación para la mesa Clases
  • añadir manualmente usuario a UserRoles
  • Comprobar si el usuario está en el grupo de puestos correctos

Cualquier otra idea o cualquier otro método para la seguridad basada en roles, ¡por favor háganoslo saber!

Respuesta

4

Haría esto agregando un ListProperty para las funciones al modelo que representa a los usuarios. La lista contiene las funciones a las que pertenece un usuario determinado. De esta manera, si desea saber si un usuario dado pertenece a un rol determinado (supongo, la operación más común), es una prueba de membresía rápida.

Puede poner los nombres de las funciones directamente en las listas como cadenas o agregar una capa de direccionamiento indirecto a otra entidad especificando los detalles sobre la función para que sea fácil cambiar los detalles más adelante. Sin embargo, esto tiene un costo de tiempo de ejecución de un RPC adicional para obtener los detalles sobre el rol.

La desventaja de este método viene si desea eliminar a todos los usuarios de una función determinada o realizar cualquier otro tipo de operación global. Supongo que podría marcar una función como "eliminada", pero aún tendrá datos que saturan todos sus modelos de usuario hasta que los limpie manualmente. Así que tengo curiosidad por escuchar lo que otros sugieren.

+0

+1. Si desea modificar todos los usuarios con una función, puede hacer una consulta en la propiedad de la lista de la misma manera que si fuera una propiedad común para buscar a todos los usuarios con esa función. –

+0

por lo que significa que no hay formas dedicadas de lidiar con la seguridad basada en roles de GAE con Python? todavía tenemos que manejarlo manualmente? –

+0

Correcto, aunque no estoy seguro de cómo sería una solución 'dedicada', dada la gran variedad de necesidades de autenticación que tienen las personas. –