2012-08-05 4 views
13

Quelle est la meilleure façon de procéder à l'authentification?Sécurité dans angular.js avec Ruby on Rails

frontend J'utilise angularjs

sur backend: Ruby on Rails

Rails application en utilisant comme API pour mon frontend.

MISE À JOUR: Ce sera est l'application d'une seule page. Frontend sera développé dans Angular.js, backend dans Ruby on Rails. Dans l'idéal, je veux créer backend comme collection de ressources retournées dans json.

Je recherche la meilleure méthode d'implémentation de sécurité.

Lorsque l'utilisateur ouvre l'application, je dois vérifier si l'utilisateur est authentifié. Si non - allez à la page de connexion, Si authentifié - ouvrir qu'il veut et retourner la ressource nécessaire de backend. Je pense que j'ai besoin de stocker le jeton d'authentification du côté client. Quelle est la meilleure méthode pour le générer, ou peut-être que Rails le génère déjà pour moi?

+0

Je pense que je vais dans quelle direction vous vous dirigez avec votre question. Personnellement, cela m'intéresse aussi. Peut-être que vous pouvez reformuler un peu si. Pouvez-vous spécifier quels problèmes précis vous voulez résoudre, plutôt que de poser cette question en général? –

Répondre

4

Je ne sais pas du tout Angular.JS mais je vais essayer de vous fournir des informations générales sur les rails que vous pouvez utiliser avec n'importe quel Framework Javascript.

Pour l'authentification, vous juste besoin:

  • Un modèle pour les utilisateurs
  • un contrôleur qui gère la connexion, cette méthode contrôle utilisateur login/mot de passe, créer un objet de session avec toutes les informations nécessaires (session est stocké sur le côté serveur et un cookie est utilisé sur côté client pour associer chaque demande à une session)
  • un contrôleur pour la manipulation qui détruisent essentiellement fermeture de session que la session de l'utilisateur

Vous avez une bonne mise en œuvre in the rails tutorial here, ou vous pouvez trouver plusieurs plugins (authlogic semble être la recommandation des utilisateurs stackoverflow here).

Ensuite, il y a peu de différences entre l'authentification de traitement avec des pages html statiques ou avec AJAX:

  • Une demande HTML enverra login et mot de passe au contrôleur, qui redirige automatiquement vers une page interne une fois que la créer une session
  • en AJAX, le javascript côté client doit envoyer une demande de paiement ajax, chercher la réponse par le serveur (succès/échec) et lancer des actions adaptées (message si l'échec, redirection si le succès)

Dans les deux cas, l'important est de vérifier que l'utilisateur est authentifié chez chaque contrôleur, sinon n'importe qui serait autorisé à lancer une action ou à accéder à des informations internes.

1

Je suis en train de faire quelque chose de similaire et je trouve cette application par exemple qui a été très utile pour moi y aller dans la bonne direction: https://github.com/karlfreeman/angular-devise

Existe aussi d'autres discussions à ce sujet ici: https://github.com/karlfreeman/angular-devise/issues/1

Et voici un autre repo qui adopte une approche légèrement différente: https://github.com/colindensem/demo-rails-angularjs

J'ai fini par emprunter des idées de tout ce qui précède. Voici une démo de travail si quelqu'un est intéressé: https://github.com/jesalg/RADD