2012-08-05 19 views
13

¿Cuál es la mejor manera de realizar la autenticación?Seguridad en angular.js con Ruby on Rails

en frontend utilizo angularjs

el backend: Ruby on Rails

aplicación Rails utilizando como API para mi frontend.

ACTUALIZACIÓN: Esto es será sola aplicación página. Frontend se desarrollará en Angular.js, back-end en Ruby on Rails. En el ideal quiero construir back-end como colección de recursos devueltos en json.

Busco el mejor método de implementación de seguridad.

Cuando el usuario abre la aplicación, necesito verificar si el usuario está autenticado. Si no es así, vaya a la página de inicio de sesión, Si está autenticado, abra lo que quiere y devuelva los recursos necesarios del servidor.

Creo que necesito almacenar el token de autenticación en el lado del cliente. ¿Cuál es el mejor método para generarlo, o tal vez Rails ya lo genere para mí?

+0

Creo que entiendo en qué dirección se dirige con su pregunta. Personalmente, esto me interesa también. Sin embargo, quizás puedas reformularlo un poco. ¿Puede especificar qué problemas exactos desea resolver, en lugar de hacer esta pregunta en general? –

Respuesta

4

No conozco Angular.JS en absoluto, pero intentaré proporcionarle información general sobre raíles que puede usar con cualquier Framework de Javascript.

Para la autenticación, sólo necesita:

  • Un modelo para los usuarios
  • un controlador que maneja la conexión, este método de verificación de usuario de usuario/contraseña, crear un objeto de sesión con toda la información necesaria (la sesión se almacenan en el lado del servidor y una cookie se utiliza en el lado del cliente para asociar cada solicitud de una sesión)
  • un controlador para cerrar la sesión de manipulación que básicamente sólo destruyen la sesión del usuario

Tiene una buena implementación in the rails tutorial here, o puede encontrar varios complementos (authlogic parece ser la recomendación de los usuarios de stackoverflow here).

Entonces, hay pocas diferencias entre la autenticación de manipulación con páginas HTML estáticas o con AJAX:

  • Una petición HTML enviará de usuario y contraseña al controlador, que redirigirá automáticamente a otra página interna una vez que el sesión de crear
  • en Ajax, el código JavaScript en el lado del cliente debe enviar una solicitud de ajax, buscar la respuesta por el servidor (éxito/fracaso) y poner en marcha acciones adecuadas (mensaje si falla, el redireccionamiento si el éxito)

En ambos casos, lo importante es verificar que el usuario esté autenticado en cada controlador, de lo contrario cualquiera podría iniciar una acción o acceder a la información interna.

1

que estoy tratando de hacer algo similar y me encontré con esta aplicación ejemplo que ha sido muy útil para que me va en la dirección correcta: https://github.com/karlfreeman/angular-devise

también comprobación más discusión sobre ello aquí: https://github.com/karlfreeman/angular-devise/issues/1

Y aquí hay otro repositorio que tiene un enfoque ligeramente diferente: https://github.com/colindensem/demo-rails-angularjs

Terminé tomando ideas de todo lo anterior. Aquí hay una demostración en funcionamiento si alguien está interesado: https://github.com/jesalg/RADD