我想与您(社区)分享我的问题。
我使用MEAN
堆栈,因此我将Node.js
与Express
和AngularJS
一起使用,并且我有应用程序应用程序。
我在passport
代码中使用Node \ Express \ Jade
作为身份验证策略。
我想在我的页面上创建管理部分来管理用户和其他人。
我还希望通过向$ routeProvider添加一些访问控制来保护异步加载的AngularJS站点,如:
$routeProvider.when('/admin/users', {
templateUrl: '/views/admin/users.html',
auth: {
required: true,
roles: ['admin']
}
})
这只是伪代码,我想在真正的解决方案中实现。
如果用户未登录,则应重定向到/signin
页面,如果用户已登录且查看此页面没有适当的角色,则应使用自定义信息重定向到适当的视图。
答案 0 :(得分:2)
我更喜欢在服务器端处理访问控制,如果他/她不能访问它,就不会为用户提供任何服务。然后我对服务器的响应进行分析和解释,以执行重新路由到登录表单等操作。
这允许非常灵活的安全机制。例如,我可以使用防火墙配置我的后端安全性,就像您所描述的那样(路径“/ admin”及其所有后代应该受到保护)。我可以使用ACL来保护单个对象,或者SecurityManager
,它允许对发出请求的用户进行更复杂的分析。
也许这不是你问题的直接答案,而是鼓励以不同的方式解决问题。我仍然认为这是一种比我在纯JS访问控制方面看到的更好的方法。
答案 1 :(得分:1)
查看UI-Router:https://github.com/angular-ui/ui-router
非常酷,你可以根据你想要的任何安全方案拦截状态变化。
我们正在使用基于权限/角色/组的安全方案,它的工作非常棒。