La mejor solución para la autenticación en Ruby on Rails [cerrado]

84

Estoy buscando una solución prediseñada que pueda usar en mi aplicación RoR. Lo ideal es que busque algo similar a la autenticación de formularios ASP.NET que proporcione validación de correo electrónico, controles de registro y permita a los usuarios restablecer sus contraseñas. Ah, sí, y me permite extraer fácilmente al usuario que está conectado actualmente a la aplicación.

Empecé a buscar en las piezas ya escritas, pero me resultó muy confuso. He visto LoginGenerator, RestfulAuthentication, SaltedLoginGenerator, pero no parece haber un solo lugar que tenga excelentes tutoriales o proporcione una comparación de ellos. Si hay un sitio que no he descubierto todavía, o si hay un estándar de facto que la mayoría de la gente usa, agradecería la ayuda.

Dan Wolchonok
fuente

Respuestas:

83

AuthLogic parece ser el nuevo chico del 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á disponible, Devise parece ser el nuevo chico en el bloque

https://github.com/plataformatec/devise o he estado implementando mi propia autenticación ahora con el has_secure_passwordintegrado en Rails http://railscasts.com/episodios/250-authentication-from-scratch-revised

Nota al margen: Ruby Toolbox es un gran sitio para encontrar la mejor solución actual en varias categorías (según la cantidad de observadores de GitHub):

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

Brian Armstrong
fuente
Realmente también consideraría usar authlogic. 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 personalizable
taelor
Seguí tu consejo y me decidí por Authlogic, y estoy realmente satisfecho. Puede tomar un poco más de tiempo configurarlo, es muy limpio y fácil de entender. No hay pilas aterradoras de código generado.
Guy C
Sí, definitivamente lleva más tiempo configurarlo. Ojalá hubiera eliminado un poco de la abstracción allí y lo hubiera enviado con cosas que todos necesitan como contraseña olvidada y confirmaciones de correo electrónico incluidas. Pero en general, sigue siendo bastante bueno.
Brian Armstrong
También pude combinarlo con OpenID y RPXNow, que resultó increíble, ejemplo aquí: compradoresvote.com/user_session/new
Brian Armstrong
El proyecto de ejemplo hace que sea muy fácil de poner en marcha. Simplemente clone el repositorio, cópielo en un archivo database.yml y tendrá listo un sitio completamente autenticado.
Casey Watson
22

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

John Topley
fuente
1
Yo apoyaría esto. Recientemente tuve que implementar un sistema de autenticación de sitios múltiples bastante complejo, que basé en la parte superior del diseño de RestfulAuth, proporcionando la misma API al resto de la aplicación como lo haría RA. Definitivamente, una clara y agradable facilidad para trabajar con API con fácil leer código :-)
Laurie Young
10

Para una solución realmente simple, elija Liquidación .

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

Nick Hammond
fuente
1
Puedo responder por Devise. Lo configuré en mi aplicación y puede decir que es fácil de usar, al menos para mí como un novato relativo. Escribí en un blog sobre mi experiencia con él aquí: therealmattslay.blogspot.com/2010/06/…
MattSlay
Lo siento ... Aquí está el enlace corregido: mattslay.com/devise-authentication-for-rails
MattSlay
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 pierda tiempo en ellos, aunque eran geniales en ese momento.

pantulis
fuente
3

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

Bryan M.
fuente
1
Por favor, no me consideren terriblemente grosero, pero creo que la entrada al foro es un ejemplo de la peor parte de Restful Authentication. Hay una multitud de características que faltan y aquí hay un conjunto de pasos muy largo (y contradictorio) para agregar esas características de una en una. Sea lo que sea lo contrario de DRY, estoy bastante seguro de que eso es todo. Solo que no se está repitiendo, está repitiendo a cientos de otros desarrolladores para incluir cosas que deberían haberse incluido u opcionales para RA desde el principio.
John Munsch
3

Realmente me gusta la autorización de Thoughtbot. Muy simple y tiene algunos buenos ganchos y es comprobable.

sam
fuente
3

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

Desafortunadamente, no puedo publicar más de un enlace, pero los enlaces al railscast, la publicación del blog de restablecimiento de contraseña y la aplicación de ejemplo están todos en el archivo README (consulte el repositorio de AuthLogic para el archivo README).

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

Sarahhodne
fuente
Enlace de Railscast - railscasts.com/episodios/160-authlogic
Martinatime
2

restful_authentication es una herramienta poderosa que es muy flexible y proporciona la mayor parte de lo que está buscando de forma inmediata. Sin embargo, algunas advertencias:

  1. No pienses en términos de "controles". En Rails, el modelo, la vista y el controlador son mucho más independientes que en ASP.NET 'estilo Webforms'. Determine lo que desea 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 leer (al menos parte) del código generado. Si tiene una idea general de lo que está sucediendo debajo del capó, encontrará que la depuración y la personalización son mucho más fáciles.
domgblackwell
fuente
2

El complemento restful_authentication y otros complementos que lo amplían, responden perfectamente a tus necesidades. Una búsqueda rápida en github.com revelará muchos tutoriales, ejemplos y extensiones. Solo ve aquí:
- http://github.com/search?q=restful_authentication

Hay varios proyectos que usan restful_authentication solo para proporcionar ejemplos de una aplicación Rails básica con solo las partes de autenticación.

  1. http://github.com/fudgestudios/bort - Una aplicación de rieles base que incluye: Autenticación RESTful
  2. http://github.com/mrflip/restful_authentication_example - Otro proyecto con un gran ejemplo de cómo usar restful_authentication
  3. http://github.com/activefx/restful_authentication_tutorial : igual que el anterior, con algunos otros complementos incluidos.
  4. http://railscasts.com/episodios/67-restful-authentication : un gran screencast que explica restful_authentication

Esta información debería ser suficiente para que comiences a encontrar caras y colas ... buena suerte.

Evgeny
fuente
2

Solo actualizo esto: Railscast # 250 de Ryan Bates muestra cómo construir un sistema de autenticación desde cero ...

Adam Jonas
fuente
2
Si bien RailsCast en un sistema de autenticación a medida es excelente (y he implementado un sistema similar varias veces), de ninguna manera está prediseñado y no proporciona todas las características que ofrece una configuración como Devise.
Colin R
De acuerdo, pero Devise puede ser bastante voluminoso. En mi opinión, se puede ahorrar mucho tiempo y angustia construyendo su propio sistema de autenticación, a menos que realmente vaya a aprovechar al máximo las funciones que ofrece Devise.
Adam Jonas
2
Estoy buscando una solución prediseñada que pueda usar en mi aplicación RoR.
Colin R
0

Otro voto para Liquidación, tal vez no tan personalizable o tan 'in' como authlogic, pero en términos de poder colocarlo en su lugar y listo, definitivamente vale la pena echarle un vistazo.

Dave Smylie
fuente