2011-09-07 22 views
5

He estado programando con Sinatra y Padrino desde hace bastante tiempo. Sin embargo, aún no puedo encontrar la solución de autenticación y autorización correcta para Padrino. Permítanme explicar mis expectativas y lo que ya probé.Solución de autenticación y autorización para Padrino

Con Sinatra, utilicé con éxito la gema sinatra-authentication junto con la gema role_model. Generalmente uso el Mongoid ORM para hablar con MongoDB. Estas dos gemas juntas me permiten encargarme de la authetication, proteger las rutas, verificar las funciones del usuario conectado para aplicar el control de acceso.

sinatra-authentication no funciona con Padrino, es muy específico para Sinatra. Lo intenté varias veces. Ya he probado tanto omniauth como warden con los módulos correspondientes de Padrino, pero por una razón u otra no puedo hacer que funcionen tan simplemente como la maravillosa gema sinatra-autentication.

Por lo tanto - antes de que pueda intentar implementar una solución de mi propia (o portar Sinatra-autenticación al Padrino) - ¿Puede alguien sugerir otras soluciones de autenticación y autorización? Por el momento no necesito ninguna otra fantasía: la autenticación basada en una simple base de datos funcionará perfectamente.

Respuesta

0

Es mejor utilizar la solución de autenticación incorporado, sólo echar un vistazo en el padrino-administrador, puede utilizar Padrino :: Autenticación sin administrador dentro de cualquier aplicación que necesita.

Es bastante simple, basado en roles/rutas.

http://www.padrinorb.com/api/Padrino/Admin/AccessControl/Base.html#allowed%3F-instance_method

+3

Uso de fuerzas padrino-admin que le permite trabajar con el modelo de la cuenta generada por el administrador (o solución eso); que puede no ser óptimo para el OP. Más importante aún, hay problemas de seguridad abiertos (https://github.com/padrino/padrino-framework/issues/384), cualquiera que implemente padrino-admin en producción debe tener en cuenta. – pithyless

+2

Esa seguridad es un problema que se cerró hace 2 años, fyi espectadores futuros – Jonah

1

Una solución de autenticación independiente para Padrino has been discussed, pero no se ha resuelto todavía. Mientras tanto, una sugerencia popular es usar padrino-warden.

Descargo de responsabilidad: Estoy en una situación similar a la de OP y todavía no tengo experiencia en la administración personal en producción.

+0

Sí, para arrojar algo de luz sobre esto - esto ha sido programado para v1.0. Podemos terminar implementando una API para conectar su propia solución (junto con recomendaciones/sugerencias) y separar las preocupaciones entre la autorización y la autenticación. Mantente atento al problema resaltado por @pithyless. –

1

Ryan Bates tiene una gran screencast rieles sobre cómo hacer esto (no libre: http://railscasts.com/episodes/250-authentication-from-scratch-revised).

No debería ser demasiado difícil de adaptar el Rails Magic de distancia y hacer lo mismo para Sinatra o Padrino.

Ahora, esto podría no ser una buena opción si necesita un montón de características como las contraseñas olvidadas, etc. Pero una vez más, los que no debería ser demasiado difícil de adaptar.

3

Sé que la pregunta tiene dos años. Pero recientemente todavía tuve el mismo problema que el padrino-guardián no está mal documentado y me enfrenté a muchos problemas. Así que documenté mis hallazgos en workaround.org. Puede ayudar a los menos afortunados.

Considero que padrino-admin es un buen andamio del que aprender. Pero el modelo de usuario es bastante inflexible. Y el concepto de autorización extrañamente está haciendo lo que a los autores de Padrino no les gusta: colocar las rutas de configuración en un lugar central en lugar de mover la configuración a los controladores. (El padrino-admin tiene otros problemas como la falta de paginación y el apoyo a las claves externas que faltan. Así que no es ni remotamente comparable a lo Django provee.)

Cuestiones relacionadas