2012-05-29 2 views
0

J'ai défini un ensemble de routes à l'aide backboneComment autoriser l'accès qu'aux itinéraires spécifiques

Par exemple:

Backbone.Routes.prefix = Onethingaday.Routers 
Backbone.Routes.map 

"!*splat": 
    "HomeRouter" : "reroute" 

"": 
    "NavbarRouter" : "index" 
    "SidebarRouter" : "index" 
    "HomeRouter" : "index" 

"all": 
    "NavbarRouter" : "index" 
    "SidebarRouter" : "index" 
    "HomeRouter" : "all" 

"news": 
    "NavbarRouter"  : "index" 
    "SidebarRouter"  : "index" 
    "NotificationsRouter" : "index" 

"popular/threads": 
    "NavbarRouter" : "index" 
    "SidebarRouter" : "index" 
    "DiscoverRouter" : "popularThreads" 

Maintenant, je veux limiter l'accès à certaines routes soit seulement en mesure d'accéder à ' all 'et' news 'routes si l'utilisateur est' isLoginedIn '. Comment puis-je faire une vérification ici? Est-ce que je peux vérifier et comparer et rediriger l'utilisateur vers une page de connexion séparée si l'utilisateur essaie d'accéder à la page 'tous' et 'nouvelles' par exemple

Répondre

0

en fonction de la façon dont vous stockez l'état de votre utilisateur actuel, que ce soit un SessionController ou un modèle CurrentUser, vous pouvez toujours exposer une méthode le long des lignes de currentUser.isLoggedIn().

Je ne suis pas entièrement sûr de votre carte, comme Backbone expose seulement hashmap simple profondeur pour les routes (utilisez-vous quelque chose d'autre faire définir vos itinéraires?)

Dans l'une de mes applications Backbone j'ai le code qui est le long des lignes suivantes:

home: function homeFn() 
{ 
    if (this.app.currentUser.isAnonymous()) 
    { 
     this.app.page('index'); 
    } 
    else 
    { 
     this.app.page('dashboard'); 
    } 
} 

qui vous donne un contrôle direct dans le mappage d'itinéraire. Si vous n'aimez pas cela, vous pouvez toujours étendre l'objet Backbone.Router pour avoir des filtres avant/après. Au moment de l'écriture, this plugin est celui que j'ai utilisé auparavant et m'a aidé à faire exactement ce que vous essayez d'accomplir.

+0

Salut, merci pour votre réponse. Oui, j'ai déjà une méthode pour savoir si l'utilisateur est connecté, donc je peux vérifier isLoggedIn pour l'utilisateur. Ce dont je n'étais pas sûr, c'est comment je peux différencier les routes pour un utilisateur 'connecté' par rapport à un utilisateur 'non-connecté'. Par exemple, pour l'itinéraire 'news', un utilisateur connecté doit pouvoir accéder à des problèmes d'E/S, mais pour un utilisateur non connecté, je souhaite le rediriger vers une page de connexion distincte. Fondamentalement, j'ai l'intention d'avoir des actions différentes pour les routes de diff si l'utilisateur n'est pas connecté par ex. nouvelles -> Aller à la page de connexion, populaire - permettre l'accès etc – Zhen

Questions connexes