【问题标题】:AngularJs and Angular-UI-Router routes permissionsAngularJs 和 Angular-UI-Router 路由权限
【发布时间】:2016-05-25 09:55:56
【问题描述】:

我面临一个关于如何根据从服务器获取的远程数据实施路由限制的问题。

假设我有以下配置文件:

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.edit 状态的普通用户应该被重定向到post.view 状态,如果帖子的域是公共的......但是如果帖子的域是私有的,则应该显示未经授权的访问页面。直接在解决方案上执行此操作是一个好方法吗?有哪些替代方案?

【问题讨论】:

    标签: javascript angularjs angular-ui-router user-permissions


    【解决方案1】:

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

    role based authorization

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

    Ui-router, routes based on permission

    【讨论】:

    • 谢谢!这些教程真的帮助我得到了一些工作!但是现在,我有一个不同的问题......我能够相应地重定向用户,但每次重定向发生时,都会出现某种闪烁(并且加载了一些模板,未经授权的状态)!
    • 您可以通过显示一些带有加载图标的叠加层来避免闪烁。
    • 在“待办事项列表”中添加带有加载图标的叠加层 :) 我设法使用event.preventDefault() 消除了一些闪烁
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2017-11-24
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多