Deseo crear un modelo de UserSession, que carga y guarda el ID de sesión en una cookie utilizando el complemento de cookie jQuery.Requerir js backbone JS global models
Este es mi código para mi módulo de modelo UserSession:
define(['jQuery', 'Underscore', 'Backbone'],
function($, _, Backbone){
var UserSession = Backbone.Model.extend({
defaults: {
'accessToken': null,
'userId': null
},
initialize: function(){
this.load();
},
authenticated: function(){
return Boolean(this.get('accessToken'));
},
save: function(authHash){
$.cookie('userId', authHash.id);
$.cookie('accessToken', authHash.accessToken);
},
load: function(){
this.userId = $.cookie('userId');
this.accessToken = $.cookie('accessToken');
}
})
return UserSession;
});
Pero le digo que quiero acceder a él en mi punto de vista entrada:
define(['jQuery', 'Underscore', 'Backbone', 'text!templates/login.html', 'models/UserLogin', 'models/UserSession'],
function($, _, Backbone, loginTemplate, UserLogin, UserSession){
var LoginView = Backbone.View.extend({
model: new UserLogin,
el: $('#screen'),
events: {
'submit #frm-login': 'login'
},
login: function(e){
e.preventDefault(); // Lets not actually submit.
this.model.set({
'username': $('#login-username').val(),
'password': $('#login-password').val()
});
this.model.save(null, {
success: function(nextModel, response){
// Do something here with UserSession model
},
error: function(){
}
});
},
render: function(){
$(this.el).html(_.template(loginTemplate, {}));
return this;
}
});
return new LoginView;
});
La cosa está cada vez que se accede al UserSession model in modules (ver la función de devolución de llamada model.save success) usa valores predeterminados, así que necesito tener algún tipo de instancia singleton del modelo UserSession, ¿cómo puedo hacer esto?
Mi primera idea fue usar el espacio de nombres de la aplicación en nuestro main.js (primer módulo principal que se carga) e inicializar el módulo UserSession, y cada vez que otro módulo accede a ese módulo, requiere el módulo principal que tiene un objeto que devuelve la instancia de UserSession.
¿Cómo se puede hacer esto mejor?
Gracias
Su primera idea parece ser la solución perfecta. De lo contrario, tendría que almacenar la sesión de usuario en localStorage/cookies y cosas así ... –
¿cómo se genera la sesión en el servidor y se accede a ella? Quiero utilizar el mismo enfoque pero tengo problemas para acceder al contenido de la cookie. No tengo una vista de inicio de sesión ya que el servidor la muestra. – Gambo