一个选项是仅当用户在管理员组中时才设置路由。
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]);
无论如何,这种方法有几个不同的设置选项。
这种方法的优点是您不必检查用户导航到的每条路线的路线和用户权限。路由已设置或未设置。
如果您的用户能够升级到管理员权限,则将路由设置逻辑包装在一个函数中,并在授予用户管理员权限时调用它。
除此之外,据我所知,不可能在前端设置安全的身份验证系统。无论您决定采用何种方法,您还必须在服务器端检查权限。