Mise à JOUR: Comme @DustMason dit, dans sa réponse, découvrez l'impressionnant embercasts pour l'authentification des meilleures pratiques.
Afin de séparer complètement la vue (Braise app) à partir du serveur (application Rails) je veux utiliser l'authentification par jeton. Je vais probablement utiliser Concevoir sur le serveur Rails.
Du sens.
J'ai besoin de quelque chose comme un before_filter équivalent dans la Braise à l'application, où je peux vérifier si il y a un courant de l'utilisateur et si l'utilisateur a un jeton d'authentification défini.
Vous pouvez ajouter un enter
crochet sur les routes, c'est à peu près équivalent à un before_filter. Mais pas sûr que ce soit le meilleur endroit pour rechercher une auth-jeton.
Le serveur Rails sera de retour l'actuel auth jeton sur chaque appel.
Du sens. Nous utilisons des cookies d'authentification et de chercher de l'actuel profil de l'utilisateur en appelant /api/me
mais devrait fonctionner.
Si elle renvoie une valeur null auth jeton de la Braise à l'application devrait le détecter et de transition vers le non authentifié de l'état, de la redirection vers la vue login.
Chose à propos de cette approche est que (contrairement à rails), il n'est pas facile de "protéger" l'accès à un particulier de braise routes. Et peu importe ce que l'utilisateur peut toujours ouvrir des pop JS console et entrer dans quelque état qu'ils veulent. Ainsi, au lieu de penser", l'utilisateur ne peut entrer dans cet état si authentifié" considérer "que faire si un utilisateur non authentifié en quelque sorte accède à cette route"
Je pense que je devrais utiliser une Braise de l'état de la machine pour cela, mais je ne suis pas sûr de savoir comment procéder. Quelqu'un s'est attaqué à ce problème?
Notre auth besoins sont assez simples, donc nous n'avons pas trouvé la nécessité pour l'état de la machine. Au lieu de cela, nous avons une isAuthenticated
bien sur ApplicationController. Nous utilisons cette propriété en application.hbs
pour remplacer la vue principale avec un formulaire de connexion lorsqu'un utilisateur n'est pas authentifié.
{{if isAuthenticated}}
{{render "topnav"}}
{{outlet}}
{{else}}
{{render "login"}}
{{/if}}
De ApplicationRoute, nous allons chercher du profil de l'utilisateur:
App.ApplicationRoute = Ember.Route.extend({
model: function() {
var profiles;
profiles = App.Profile.find({ alias: 'me' });
profiles.on("didLoad", function() {
return profiles.resolve(profiles.get("firstObject"));
});
return profiles;
}
});
Ensuite, notre ApplicationController calcule c'est isAuthenticated de propriété sur la base du profil a été renvoyée.