J'utilise la session concept de contrôle de la connexion de l'utilisateur de l'état.
J'ai un SessionModel et SessionCollection comme ceci:
SessionModel = Backbone.Model.extend({
defaults: {
sessionId: "",
userName: "",
password: "",
userId: ""
},
isAuthorized: function(){
return Boolean(this.get("sessionId"));
}
});
Sur l'app début, j'initialise un monde de variables disponibles, activeSession. Au début de cette session est autorisée et toutes les opinions se liant à cette instance du modèle peut rendre en conséquence. Sur la tentative de connexion, j'ai d'abord déconnexion en invalidant la session.
logout = function(){
window.activeSession.id = "";
window.activeSession.clear();
}
Cela va déclencher tout point de vue que d'écouter de la activeSession et sera mis mon mainView en mode de connexion où il va mettre en place une invite de connexion. J'ai ensuite le nom d'utilisateur et le mot de passe de l'utilisateur et de les fixer sur le activeSession comme ceci:
login = function(userName, password){
window.activeSession.set(
{
userName: userName,
password: password
},{
silent:true
}
);
window.activeSession.save();
}
Cela va déclencher une mise à jour pour le serveur par le biais de la colonne vertébrale.la synchronisation. Sur le serveur, j'ai la session de ressources action POST de l'installation afin qu'il vérifie le nom d'utilisateur et mot de passe. Si elle est valable, il remplit les détails de l'utilisateur de la session, définit un id de session unique et supprime le mot de passe, puis envoie le résultat en retour.
Ma colonne vertébrale.la synchronisation est alors le programme d'installation pour ajouter l'id de session de la fenêtre.activeSession à toute sortant requête au serveur. Si l'Id de session n'est pas valide sur le serveur, il renvoie une erreur HTTP 401, ce qui déclenche un logout(), conduisant à la présentation de l'invite de connexion.
Nous ne sommes pas tout à fait terminé la mise en œuvre de cette encore, il peut donc y avoir des erreurs dans la logique, mais, fondamentalement, c'est la façon dont on l'approche. Aussi, le code ci-dessus n'est pas de notre code, car il contient un peu plus de logique, de traitement, mais c'est l'essentiel.