创建AngularJS ACL的最佳方法是什么?

时间:2014-01-04 20:08:55

标签: javascript node.js angularjs mean-stack

我想与您(社区)分享我的问题。

我使用MEAN堆栈,因此我将Node.jsExpressAngularJS一起使用,并且我有应用程序应用程序。

我在passport代码中使用Node \ Express \ Jade作为身份验证策略。 我想在我的页面上创建管理部分来管理用户和其他人。

我还希望通过向$ routeProvider添加一些访问控制来保护异步加载的AngularJS站点,如:

$routeProvider.when('/admin/users', {
    templateUrl: '/views/admin/users.html',
    auth: {
        required: true,
        roles: ['admin']
    }
})

这只是伪代码,我想在真正的解决方案中实现。 如果用户未登录,则应重定向到/signin页面,如果用户已登录且查看此页面没有适当的角色,则应使用自定义信息重定向到适当的视图。

2 个答案:

答案 0 :(得分:2)

我更喜欢在服务器端处理访问控制,如果他/她不能访问它,就不会为用户提供任何服务。然后我对服务器的响应进行分析和解释,以执行重新路由到登录表单等操作。

这允许非常灵活的安全机制。例如,我可以使用防火墙配置我的后端安全性,就像您所描述的那样(路径“/ admin”及其所有后代应该受到保护)。我可以使用ACL来保护单个对象,或者SecurityManager,它允许对发出请求的用户进行更复杂的分析。

也许这不是你问题的直接答案,而是鼓励以不同的方式解决问题。我仍然认为这是一种比我在纯JS访问控制方面看到的更好的方法。

答案 1 :(得分:1)

查看UI-Router:https://github.com/angular-ui/ui-router

非常酷,你可以根据你想要的任何安全方案拦截状态变化。

我们正在使用基于权限/角色/组的安全方案,它的工作非常棒。