2008-08-23 11 views
82

Estoy buscando una solución preconstruida que pueda usar en mi aplicación RoR. Idealmente, estoy buscando algo similar a la autenticación de formularios ASP.NET que proporciona validación de correo electrónico, controles de registro y permite a los usuarios restablecer sus contraseñas. Ah, sí, y me permite sacar fácilmente al usuario que está actualmente conectado a la aplicación.La mejor solución para la autenticación en Ruby on Rails

Empecé a examinar las piezas ya escritas, pero me pareció realmente confuso. He consultado LoginGenerator, RestfulAuthentication, SaltedLoginGenerator, pero no parece haber un solo lugar que tenga excelentes tutoriales ni proporcione una comparación de ellos. Si hay un sitio que aún no descubrí, o si existe un estándar de facto que usa la mayoría de las personas, agradecería la ayuda.

Respuesta

82

AuthLogic parece ser el nuevo chico en el bloque y parece ser la próxima evolución de restful_authentication, más fácil de usar, etc

http://github.com/binarylogic/authlogic/tree/master

Editar: ahora que Rails 3 está fuera de control, idearán parece ser el nuevo, nuevo chico en el bloque

https://github.com/plataformatec/devise o que han estado rodando mi propia autenticación ahora con la has_secure_password integrado en rieles http://railscasts.com/episodes/250-authentication-from-scratch-revised

Nota al margen: Rubí Toolbox es un gran sitio para encontrar la mejor solución actual en diversas categorías (basado en el número de observadores de GitHub):

http://ruby-toolbox.com/categories/rails_authentication.html

+0

Realmente consideraría usar authlogic también.es mucho más limpio que restful_auth. Authlogic aprendió de todas las soluciones anteriores y las volvió a empaquetar en una solución más limpia y más personalizable. – taelor

+0

Seguí su consejo y fui con Authlogic, y estoy muy contento. Podría tomar un poco más de tiempo para la configuración, lo que es muy limpio y fácil de entender. No hay montones de miedo de código generado. –

+0

Sí, definitivamente tarda más en configurarse. Desearía que hubiera eliminado un poco de la abstracción y la enviara con todo lo que necesita, como contraseña olvidada, y confirmaciones de correo electrónico incluidas. Pero en general, sigue siendo bastante bueno. –

21

Realmente recomendaría Restful Authentication. Creo que es prácticamente el estándar de facto.

+1

lo haría segundos esto. Recientemente tuve que implementar un sistema de autenticación de varios sitios bastante complejo, que me basé en el diseño RestfulAuth, que proporciona la misma API para el resto de la aplicación que RA. Definitivamente, es muy fácil trabajar con API con facilidad. leer el código :-) –

3

Solo una nota, LoginGenerator y SaltedLoginGenerator han sido reemplazados por Restful Authentication y no son compatibles con las versiones más recientes de Rails. No pierdas tiempo en ellas, aunque fueron geniales en ese momento.

4

También me gustaría señalar un excelente tutorial/discussion sobre la ampliación de la funcionalidad principal de Restful Authentication, en caso de que esté buscando algo un poco más robusto.

+1

Por favor, no me crean terriblemente grosero, pero creo que la entrada al foro es un ejemplo de la peor parte de la Autenticación reposada. Hay una multitud de características que faltan y aquí hay un conjunto de pasos súper largo (y contradictorio) para agregar esas características de a una por vez. Sea lo que sea opuesto a DRY, estoy bastante seguro de que es eso. Solo que no se está repitiendo a sí mismo, está repitiendo cientos de otros desarrolladores para incluir cosas que deberían haberse incluido u opcionales para RA desde el principio. –

2

restful_authentication es una poderosa herramienta que es muy flexible y proporciona la mayoría de lo que está buscando de fábrica. Sin embargo, un par de advertencias:

  1. No piense en términos de 'controles'. En Rails, el modelo, la vista y el controlador son mucho más independientes que en ASP.NET 'estilo de Webforms'. Calcule lo que quiere de cada capa de forma independiente, escriba pruebas/especificaciones para que coincidan y asegúrese de que cada capa esté haciendo lo que espera.
  2. Incluso si está utilizando un complemento, no hay sustituto para la lectura (al menos algunos) del código generado. Si tiene una idea general de lo que sucede debajo del capó, encontrará que la depuración y la personalización son mucho más fáciles.
2

El complemento restful_authentication y otros complementos que lo amplían, responden perfectamente a sus necesidades. Una búsqueda rápida en github.com revelará una gran cantidad de tutoriales, ejemplos y extensiones. Sólo tiene que ir aquí:
- http://github.com/search?q=restful_authentication

Hay varios proyectos que utilizan restful_authentication sólo para proporcionar ejemplos de un escueto rieles aplicación con sólo las partes de autenticación.

  1. http://github.com/fudgestudios/bort - Una aplicación de rieles de la base que incluye: Autenticación REST
  2. http://github.com/mrflip/restful_authentication_example - Otro proyecto con un gran examlpe de cómo utilizar restful_authentication
  3. http://github.com/activefx/restful_authentication_tutorial - Igual que el anterior, con algunos otros plugins incrustados.
  4. http://railscasts.com/episodes/67-restful-authentication - una gran screencast explicar restful_authentication

Esta información debería ser suficiente para empezar la búsqueda de cabezas y colas ... buena suerte.

3

AuthLogic parece ser lo que quiere para esto. Es muy configurable, y aunque no genera el código para ti, es bastante fácil de usar. Para validación de correo electrónico y recuperación de contraseña, probablemente desee utilizar la columna :perishable_token. AuthLogic se encarga de eso, solo necesita restablecerlo cuando se usa. Para obtener información sobre cómo configurar una aplicación básica, puede echar un vistazo a Ryan Bates 'Railscast on AuthLogic, y la aplicación de ejemplo "oficial". Ben Johnson, el creador de AuthLogic también ha escrito una publicación en el blog sobre cómo restablecer las contraseñas de manera REST.

Lamentablemente no puedo publicar más de un enlace, pero los vínculos con la Railscast, el blog de restablecimiento de contraseña y la aplicación de ejemplo, están todos en el README (véase el repositorio AuthLogic para el README)

Actualización: ahora puedo publicar más enlaces, así que vinculé un poco más. Gracias marinatime por agregar el enlace mientras tanto

+0

Enlace Railscast - http://railscasts.com/episodes/160-authlogic – martinatime

3

Me gusta mucho la autorización de thoughtbot. Muy simple y tiene algunos buenos ganchos y es comprobable.

0

Otro voto a favor de Clearance: tal vez no tan personalizable o tan 'in' como authlogic, pero en términos de poder dejarlo en su lugar y listo, definitivamente vale la pena echarle un vistazo.

10

Para una solución realmente simple, vaya con Clearance.

Si busca más opciones Devise es una gran solución. Utiliza Warden, que es un sistema de autenticación basado en rack.

+1

Puedo responder por Devise. Lo configuro en mi aplicación, y puedo decir que es fácil de usar, al menos para mí como un novato relativo. Escribí en mi blog sobre mi experiencia aquí: http://therealmattslay.blogspot.com/2010/06/devise-authentication-for-rails.html – MattSlay

+0

@MattSlay link was dead –

+0

Lo sentimos ... Aquí está el enlace corregido: http : //mattslay.com/devise-authentication-for-rails/ – MattSlay

2

Sólo la actualización de esta Ryan Bates Railscast #250 muestra la construcción de un sistema de autenticación desde cero ....

+2

Si bien RailsCast en un sistema de autenticación personalizado es excelente (y he implementado un sistema similar varias veces), de ninguna manera está precompilado y no proporciona todas las características que tiene una configuración como Devise. –

+0

De acuerdo, pero Devise puede ser bastante voluminoso. En mi opinión, se puede ahorrar mucho tiempo y dolor de corazón construyendo su propio sistema de autenticación a menos que realmente vaya a aprovechar plenamente las características que ofrece Devise. –

+2

_Estoy buscando una solución preconstruida que pueda usar en mi aplicación RoR._ –