AngularJs和Angular-UI-Router路由权限
AngularJs and Angular-UI-Router routes permissions
我遇到了如何根据从服务器获取的远程数据实施路由限制的问题。
假设我有以下配置文件:
angular.module('myApp')
.config(['$stateProvider', function($stateProvider) {
$stateProvider
.state('post', {
url: '/post/:post_id',
abstract: true,
[...]
})
.state('post.view', {
url: '/view'
[...]
})
.state('post.edit', {
url: '/edit'
[...]
})
}]);
我的申请要求是:
A post 有一个所有者(post 的创建者)并且它的域可能是 public 或私有的。
如果域是 public,每个用户都将能够看到 post(进入状态 post.view
),如果不是(域是私有),只有所有者才能看到它。
post.edit
状态仅供所有者访问。
要做到这一点,最好的方法是什么?
我正在考虑有一个从服务器(post 的域和通信用户角色)获取数据的解决承诺,执行所需的检查并相应地 returns(承诺已解决或拒绝了)。
但是,如果他没有被授权,我如何将用户重定向到正确的状态?例如,一个试图访问 post.edit
状态的普通用户应该被重定向到 post.view
状态,如果 post 的域是 public... 但是如果post 的域是私有的,应显示未经授权的访问页面。直接在解决方案上执行此操作是一种好方法吗?有哪些替代方案?
看看这个关于基于角色的路由授权的很棒的教程:
也看看这个 Whosebug 答案,这里有基于登录的条件路由,你可以使用相同的角色逻辑来达到你的目的,
Ui-router, routes based on permission
我遇到了如何根据从服务器获取的远程数据实施路由限制的问题。
假设我有以下配置文件:
angular.module('myApp')
.config(['$stateProvider', function($stateProvider) {
$stateProvider
.state('post', {
url: '/post/:post_id',
abstract: true,
[...]
})
.state('post.view', {
url: '/view'
[...]
})
.state('post.edit', {
url: '/edit'
[...]
})
}]);
我的申请要求是:
A post 有一个所有者(post 的创建者)并且它的域可能是 public 或私有的。
如果域是 public,每个用户都将能够看到 post(进入状态
post.view
),如果不是(域是私有),只有所有者才能看到它。post.edit
状态仅供所有者访问。
要做到这一点,最好的方法是什么?
我正在考虑有一个从服务器(post 的域和通信用户角色)获取数据的解决承诺,执行所需的检查并相应地 returns(承诺已解决或拒绝了)。
但是,如果他没有被授权,我如何将用户重定向到正确的状态?例如,一个试图访问 post.edit
状态的普通用户应该被重定向到 post.view
状态,如果 post 的域是 public... 但是如果post 的域是私有的,应显示未经授权的访问页面。直接在解决方案上执行此操作是一种好方法吗?有哪些替代方案?
看看这个关于基于角色的路由授权的很棒的教程:
也看看这个 Whosebug 答案,这里有基于登录的条件路由,你可以使用相同的角色逻辑来达到你的目的,
Ui-router, routes based on permission