2012-05-29 4 views
0

Я определил набор маршрутов с использованием остовКак разрешить доступ только к определенным маршрутам

Например:

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" 

Теперь я хочу, чтобы ограничить доступ к определенным маршрутам, то есть доступ только к " all 'и' news ', если пользователь' isLoginedIn '. Как я могу сделать чек здесь? Могу я проверить и сравнить и перенаправить пользователя на отдельную страницу входа, если пользователь пытается получить доступ к странице «все» и «новости», например

ответ

0

в зависимости от того, как вы сохраняете состояние своего текущего пользователя, будь то a SessionController или CurrentUser, вы всегда можете выставить метод по строкам currentUser.isLoggedIn().

Я не совсем уверен, что о вашем отображении, а Backbone только выставляет одну глубину HashMap для маршрутов (вы используете что-то еще делать определить свои маршруты?)

В одном из моих Backbone приложений у меня есть код, который по следующим линиям:

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

, который дает вам прямой контроль в пределах маршрута. Если вам это не нравится, вы всегда можете расширить объект Backbone.Router, чтобы иметь фильтры до/после. На момент написания статьи, this plugin - это тот, который я использовал раньше, и помог мне хорошо сделать то, что вы пытаетесь достичь.

+0

Привет, спасибо за ваш ответ. Да, у меня уже есть способ узнать, вошел ли пользователь в систему, поэтому я могу проверить isLoggedIn для пользователя. Я не был уверен в том, как я могу различать маршруты для «логируемого» пользователя и пользователя без входа. Например, для маршрута 'news', пользователь loggedin должен иметь возможность доступа без проблем, но для не-подключенного пользователя, я хочу перенаправить его на отдельную страницу входа. В основном я намерен иметь несколько разных действий для маршрутов diff, если пользователь не зарегистрирован, например. новости -> Перейти на страницу входа, популярно - разрешить доступ и т. д. – Zhen