3

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

我使用MEAN堆栈,所以我使用Node.jsandExpress并且AngularJS我有单个应用程序应用程序。

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

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

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

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

4

2 回答 2

2

我更喜欢在服务器端处理访问控制,如果他/她不应该能够访问它,就不要为用户提供任何服务。然后我填写并解释来自服务器的响应,以执行诸如重新路由到登录表单之类的操作。

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

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

于 2014-01-04T21:25:21.847 回答
1

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

它非常酷,您可以根据您想要的任何安全方案拦截状态更改。

我们将它与基于权限/角色/组的安全方案一起使用,并且效果非常好。

于 2014-01-04T20:19:49.217 回答