Angular在路由上不提供任何授权/访问权限(我说的是默认的Angular路由1.x,而不是beta 2.0或UI路由)。但是我必须执行它。
我遇到的问题是我有一项服务,该服务调用服务器以提供此信息并返回承诺。但是,此数据仅获取一次,然后缓存在客户端上,但是仍然需要获取一次。
我现在想处理$routeChangeStart
检查下一条路由是否定义了特定属性的事件authorize: someRole
。然后,该处理程序应使用我前面提到的服务获取该数据,并根据返回的数据采取相应的措施。
除了为我的所有路线添加 解析度之外 ,还有其他想法吗?我可以以某种方式集中进行此操作吗?一旦适用所有路线?
借助公认的答案,我能够实现一个相当简单且集中的解决方案,该解决方案可以进行异步授权。单击此处查看其运行状况或查看其内部工作代码。
最简单的方法是处理当前路由的解析依赖性,并且$routeChangeStart
是管理此路由的好地方。这是一个例子。
app.run(function ($rootScope, $location) {
var unrestricted = ['', '/login'];
$rootScope.$on('$routeChangeStart', function (e, to) {
if (unrestricted.indexOf(to.originalPath) >= 0)
return;
to.resolve = to.resolve || {};
// can be overridden by route definition
to.resolve.auth = to.resolve.auth || 'authService';
});
$rootScope.$on('$routeChangeError', function (e, to, from, reason) {
if (reason.noAuth) {
// 'to' path and params should be passed to login as well
$location.path('/login');
}
});
});
另一个选择是将default
方法添加到$routeProvider
和修补$routeProvider.when
以扩展默认对象的路由定义。
英文原文: http://emberjs.com/guides/routing/asynchronous-routing/ 本节内容主要介绍一些路由的高级特性,以及路由是如何处理应用中的一些复杂异步逻辑的。 承诺简介 Ember在路由中处理异步逻辑的方案主要依赖于承诺(Promise)。简单地说,承诺就是代表了最后的值的对象。承诺可以被履行(成功的获得了最后的结果)也可以被拒绝(没有获得最后的结果
Ember.js路由器能够使用异步路由处理应用程序中的复杂异步逻辑。 下面给出的表显示了路由器中处理异步逻辑的不同类型 - S.No. 异步路由器和描述 1 路由器暂停承诺 可以通过从模型钩子返回promise来暂停转换。 2 当Promises拒绝 如果在转换期间模型拒绝承诺,则将中止转换。 3 Recovering from Rejection 从中止的过渡中恢复。
1.1.0版本新增了路由授权功能,采用RBAC权限管理方式实现。 每个ISV(appKey)对应一个或多个角色 每个角色分配多个路由权限 接口跟角色相关联,ISV拥有哪些角色,就具有角色对应的接口访问权限。 假设把路由a,b,c分配给了VIP角色,那么具有VIP角色的ISV可以访问a,b,c三个路由。 默认情况下,接口访问时公开的,ISV都能访问。如果要设置某个接口访问权限,在@Open注解中指定
我正在使用Yoeman Angular软件包构建一个Angular前端站点。该项目正使用节点托管在Heroku中。js构建包。 Heroku构建项目时没有错误,它运行Gulp和Bower来安装依赖项。执行启动脚本并编译项目后,索引页面加载不会出现问题,但任何其他非主页的页面(例如登录页面)都会出现“无法获取/登录”消息。 这似乎是一个常见的问题,因为我读过许多关于如何解决Heroku上的Angul
问题内容: 在安装组件之前进行授权检查的最佳实践是什么? 我使用react-router 1.x 这是我的路线 这是我的仪表板组件: 问题答案: 更新了 React Router v4的* 解决方案 * 反应路由器到v3 使用’onEnter’事件并在回调中检查用户是否被授权:
我有一个小难题来解决这个问题。 我有一个用户和一个管理员角色。 用户应该能够列出除管理员以外的所有用户。管理员可以列出所有用户。 我想到的第一个解决方案是检查控制器级别的角色: 但是我更想做的是在路线层面上,保持控制器更干净,但不知何故它确实起作用了。它只列出用户,即使我作为管理员登录。 有什么建议吗?谢谢!