我正面临着如何根据从服务器获取的远程数据实现路由限制的问题。

假设我有以下配置文件:

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'
        [...]
    })

}]);

我的申请要求是:

  • 帖子有所有者(帖子的创建者),其域名可以是公共的或私有的。

  • 如果域是公共的,则每个用户都可以看到帖子(进入州post.view ),如果不是(域名是私有的),只有所有者才能看到它。

  • post.edit状态仅供所有者访问。

要做到这一点,最好的方法是什么?

我正在考虑有一个解决承诺,从服务器(post的域和通讯用户角色)获取数据,执行所需的检查并相应地返回(承诺已解决或拒绝)。

但是,如果他没有被授权,我将如何将用户重定向到正确的状态? 例如,如果帖子的域是公共的,则应该将尝试访问post.edit状态的普通用户重定向到post.view状态...但是如果帖子的域是私有的,则应该呈现未授权的访问页面。 在决心上直接做到这一点是一个好方法吗? 有哪些替代方案?

#1楼 票数:8 已采纳

看看这个基于角色的路由授权的精彩教程:

基于角色的授权

另外看看这个stackoverflow的答案,这里有基于登录的条件路由,你可以使用相同的逻辑角色为你的目的,

Ui-router,基于权限的路由

  ask by translate from so

未解决问题?本站智能推荐:

1回复

在AngularJS和Angular-UI-Router中使用$ urlRouterProvider匹配任何路由

我不是AngularJS开发人员,但我得到了一个项目。 现在,每当路线更改时,我需要调用以下方法。 哪条路线都没有关系,任何一条路线都没有关系。 现在,我找到了以下代码。 因此,在该方法中,我可以访问$ urlRouterProvider ,我在文档中读到,即使使用正则表
2回复

使用angular-ui-router获取服务中的路由参数

使用Angular的默认路由器,您可以通过在路由中放置以下内容来解析AJAX资源: 并实现此服务: 我目前正在开发Ionic应用程序,并具有以下服务: 以及以下路线: Ionic使用angular-ui-router ,关于此问题的文档尚不清楚。 如何以与默认A
2回复

使用angular-ui-router处理没有hashbang的路由

我在网上搜索了很多答案,但还没有找到任何答案。 现在我在我的文件中有这个代码,我认为除了我指定的那些之外我还会处理所有路由/状态: 但是,此功能仅适用于localhost:1337/#/stuff类的路径,但如果我输入localhost:1337/stuff ,我会收到一个丑陋的内
4回复

ANGULAR-UI-ROUTER:从URL解析状态

我正在创建一个具有动态状态的应用程序,有时我需要从URL解析状态名称。 例如:我有/dashboard/user/12268 ,我需要获得状态'dashboard.user' 。 用ui-router提供的工具有没有办法做到这一点? 我现在无法知道如何做到这一点......
4回复

angular-ui-router无法正常工作

我有index.html我能够加载但angular-ui-router没有将它路由到正确的templateURl(app.html与index.html相同的deirectoy)。我已经添加了所有必需的脚本但它不是工作的 我的app.js是 控制器代码在app.controlle
2回复

Angular-ui-router自动删除

因此,我使用yeoman做一个基础项目。 安装后,我想使用Angular-ui-router,所以我会bower install ui-router 。 我在index.html中注入了<script src="bower_components/angular-ui-router/re
1回复

angular-ui-router:好,但是查看ko

这是我的app.router.js: 这是我的root.html: 我可以访问“代理”页面(人员列表),并且面包屑是正确的:主页/代理 但是当我单击列表中的项目时,我总是得到相同的页面,但我的面包屑是正确的:主页/ agent / agentDetail
2回复

Angular - ui-router状态未被识别

我正在开发Spring + Angular JS Web应用程序。 项目有以下结构: app.state.js app.module.js home.state.js (function() { 'use strict'; angular .module