Один из вариантов — настраивать маршруты только в том случае, если пользователь входит в группу администраторов.
var router = new appRouter();
if (user.group === 'admin') {
router.route('foo/:id/edit','edit',function {
// your admin route logic here.
});
// or define the function in your router and reference it
// such as: router.route('foo/:id/edit','edit',router.edit);
}
Backbone.history.start();
Если у вас было много маршрутов, вы можете создать объект, который содержит ваши административные маршруты, как показано ниже: (хотя, возможно, вы захотите добавить свойство для имени маршрута)
var adminRoutes = {
'foo/:id/edit':function() {
// your logic here
},
'another/route': // same set-up as above
...
};
Затем установите их в своем условии if
с помощью цикла:
for (var k in adminRoutes)
router.route(k,k,adminRoutes[k]);
В любом случае, есть несколько различных вариантов настройки этого метода.
Преимущество этого подхода заключается в том, что вам не нужно проверять маршрут и разрешения пользователя для каждого маршрута, на который переходит пользователь. Либо маршрут настроен, либо нет.
Если у ваших пользователей есть возможность обновиться до прав администратора, оберните логику настройки маршрута в функцию и вызовите ее, когда пользователю будет предоставлен доступ администратора.
Помимо всего этого, насколько мне известно, невозможно настроить безопасную систему аутентификации на внешнем интерфейсе. Вы также должны проверить разрешения на стороне сервера, независимо от того, какой подход вы выберете.
person
fbynite
schedule
01.08.2013