Problema Backbone.js cu router-ul

Salut, am o intrebare in legatura cu router-ul din Backbone.js. Am pus intrebarea si pe stackoverflow aici: intrebare stackoverflow dar nu prea m-au multumit raspunsurile.

Pe romaneste, ideea e urmatoarea: lucrez la un SPA cu backbone si am cateva rute mai importante. Printre ele ‘index’, si ‘mainmenu’. In ruta ‘index’ utilizatorul are un formular de login. Dupa completare si submit, daca logarea a fost cu succes ruta urmatoare va deveni ‘mainmenu’ daca nu, ruta va ramane ‘index’.

Alt caz este atunci cand utilizatorul se afla pe ruta ‘mainmenu’ apasa pe un button de logout si va fi trimis pe ruta ‘index’.

Problema mea e ca utilizatorul are optiunea de a folosi butoanele ‘back’ si ‘forward’ din browser si as vrea sa previn schimbarea url-urilor, implicit a rutelor in anumite cazuri. de exemplu:

  1. as vrea sa previn utilizatorul sa navigheze cu ‘back’ la ruta ‘mainmenu’ dupa logout. navigarea la ruta ‘mainmenu’ ar trebui sa se faca doar dupa login.
  2. dupa login as vrea sa previn utilizatorul sa navigheze la ruta ‘index’ cu ‘back’ din browser.

Ar trebui sa fie o chestie relativ simpla, dar nu am gasit un exemplu care sa il pot adapta pe problema mea.

Puteti sa imi raspundeti aici sau chiar pe stack overflow. In orice caz, ceva feedback e de apreciat.

pai cu ti-a zis si pe stackoverflow. poti folosi router.execute() si verifici login-ul sau cel mai elegant asculti dupa eventul "route"
http://backbonejs.org/#Events-catalog

in Router initialize() iti faci un listner

// nu uita sa scoti ruta default!
this.on("route", this.checkLogin, this);

apoi in Routermai faci o functie unde verifici login-ul

checkLogin: function (route, params) {
    // check logIn
    if (ok) {
        // aici faci logica pt defaut route, sau daca e deja in app il trimiti catre ce ruta a cerut
        this.navigate(route, params);
   } else {
        this.navigate('index') //fortat
   }
}