Chcę utworzyć model UserSession, który ładuje i zapisuje identyfikator sesji do pliku cookie za pomocą wtyczki cookie jQuery.Wymagaj Js szkieletowych modeli globalnych JS
To jest mój kod dla mojego modułu modelu 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;
});
Ale powiedzmy, że chcę, aby uzyskać dostęp do mojego logowania widzenia:
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;
});
Rzecz jest za każdym razem uzyskać dostęp do UserSession model w modułach (zobacz funkcję success call back) używa wartości domyślnych, więc muszę mieć jakieś pojedyncze wystąpienie modelu UserSession, jak mogę to zrobić?
Moim pierwszym pomysłem było wykorzystanie przestrzeni nazw aplikacji, więc w naszym main.js (pierwszy główny moduł, który zostanie załadowany) i tam zainicjować moduł UserSession, i za każdym razem, gdy inny moduł uzyskuje dostęp do tego modułu, wymaga modułu głównego, który ma obiekt, który zwraca instancję UserSession.
Jak to zrobić najlepiej?
Dzięki
Twój pierwszy pomysł wydaje się idealnym rozwiązaniem. W przeciwnym razie musisz przechowywać sesję użytkownika w localStorage/cookies i takie rzeczy ... –
Jak wygenerować sesję na serwerze i uzyskać do niej dostęp? Chcę użyć tego samego podejścia, ale mam problemy z dostępem do zawartości plików cookie. Nie mam widoku logowania, ponieważ jest on renderowany przez serwer. – Gambo