que utilizan el concepto de sesión para controlar el estado de inicio de sesión de usuario.
Tengo un SessionModel y SessionCollection así:
SessionModel = Backbone.Model.extend({
defaults: {
sessionId: "",
userName: "",
password: "",
userId: ""
},
isAuthorized: function(){
return Boolean(this.get("sessionId"));
}
});
En la puesta en aplicación, que inicializar una variable disponible a nivel mundial, activeSession. Al inicio, esta sesión no está autorizada y cualquier vista que se vincule a esta instancia de modelo se puede representar en consecuencia. En el intento de inicio de sesión, primero salgo de sesión al invalidar la sesión.
logout = function(){
window.activeSession.id = "";
window.activeSession.clear();
}
Esto hará que los puntos de vista que escuchan la activeSession y se puso a mi MAINVIEW en el modo de inicio de sesión donde se pondrá un aviso de la conexión. Entonces consigo el nombre y contraseña del usuario y ponerlos en el activeSession así:
login = function(userName, password){
window.activeSession.set(
{
userName: userName,
password: password
},{
silent:true
}
);
window.activeSession.save();
}
Esto desencadenará una actualización al servidor a través Backbone.sync. En el servidor, tengo la configuración de acción POST de recurso de sesión para que compruebe el nombre de usuario y la contraseña. Si es válido, rellena los detalles del usuario en la sesión, establece una identificación de sesión única y elimina la contraseña y luego devuelve el resultado.
Mi backbone.sync se configura para agregar el sessionId de window.activeSession a cualquier solicitud de salida al servidor. Si el ID de la sesión no es válido en el servidor, devuelve un HTTP 401, que desencadena un cierre de sesión(), lo que lleva a que se muestre el aviso de inicio de sesión.
Todavía no hemos terminado de implementar esto, por lo que puede haber errores en la lógica, pero básicamente, así es como lo abordamos. Además, el código anterior no es nuestro código real, ya que contiene un poco más de lógica de manejo, pero es lo esencial.
¿Cómo comprobar antes de los datos es cada vez recibida? De modo que cada vez que la aplicación realiza una llamada de datos, verifica si están conectados. De lo contrario, va a la página de inicio de sesión. – Matthew
Si desea verificar cada llamada al back-end, debe integrar eso con su código back-end. Por ejemplo, si el usuario no está autenticado para * cualquier * llamada, puede devolver un '401 no autorizado' de su back-end o algo que pueda atrapar en el lado del cliente. De esta manera, no tiene que hacer una llamada por separado para verificar la autorización antes de cada solicitud de datos. En este caso, es probable que tenga que anular el método 'Backbone.sync' para capturar' 401 Desautorizado' y emitir algún evento que pueda usar para detectar si una llamada de back-end no fue autorizada. – Sam
Lee abajo por favor ↓ – user2398029