【问题标题】:Angularjs ui-router angular-permission optional query string parametersAngularjs ui-router angular-permission 可选查询字符串参数
【发布时间】:2016-05-30 23:49:27
【问题描述】:

我需要使用查询字符串通过 url 传递两个可选参数,我能够使用 ui-router (plunker) 来达到此目的,但无法在基于 angular-permission 的我的应用程序中工作以处理授权。

我的 stateChangeStart、stateChangeError 和 stateChangeSuccess 几乎是空的(我只有日志),因为权限是直接从 angular-permission 库处理的。

我需要这个参数的状态定义是:

 $stateProvider
         .state('schedule', {
              url: "/schedule?param1&param2",
              views: {
                        'header': {
                            templateUrl: "common/partials/header.tpl.html",
                            controller: "HeaderCtrl"
                          },'content': {
                             templateUrl: "schedule/partials/schedule.tpl.html",
                             controller:"ScheduleRecapCtrl"
                      }
              },
               resolve:{
                     Filters:'Filters',
                          availableFilters:function(Filters){
                                  return Filters.get().$promise;
                      }
               }, data: {
                         permissions: {
                              only: ['logged'],
                              redirectTo: 'login'
                          }
                }
              })

这是矿组定义

 app.run(function (PermissionStore, authenticationSvc) {
    // Define anonymous permission
    PermissionStore.definePermission('anonymous', function(stateParams){
            return !authenticationSvc.isLogged();
    });
    PermissionStore.definePermission('logged', function (stateParams) {
            return authenticationSvc.isLogged();
    });

我注意到,在达到带有参数的状态后,会触发一个新的 $stateChangeStart(在 $stateChangeSuccess 之前),但没有来自 url 的参数。 我不知道状态定义是否有错误,或者角度权限是否做了不正确的事情。

这是我的 bower.json 文件的依赖项部分

"dependencies": {
 "angular": "~1.4.0",
 "angular-bootstrap": "~1.1.2",
 "angular-loader": "~1.4.0",
 "angular-mocks": "~1.4.0",
 "angular-route": "~1.4.0",
 "angular-ui-router": "~0.2.17",
 "html5-boilerplate": "~5.2.0",
 "angular-animate": "^1.4.9",
 "angular-permission": "^2.0.1",
 "bootstrap": "^3.3.6",
 "startbootstrap-sb-admin-2": "^1.0.8",
 "angular-filter": "^0.5.8",
 "angular-block-ui": "^0.2.2",
 "angular-resource": "^1.5.0",
 "angular-local-storage": "^0.2.3",
 "angular-toastr": "^1.7.0",
 "angular-translate": "^2.9.1",
 "angular-sanitize": "^1.5.0",
 "angular-translate-storage-local": "^2.9.1",
 "angular-cookies": "^1.5.0",
 "angular-translate-loader-static-files": "^2.9.1"
}

【问题讨论】:

  • 这里问的是查询参数还是权限,不清楚。您的 $stateChangeStart 代码在哪里?它通常在那里你会查看一个州的数据以确定是否需要许可,然后执行一些操作。
  • 我正在使用angular-permission 处理身份验证,我的 $stateChangeStart 代码几乎是空的(我只有日志里面),我将编辑添加此详细信息的问题。

标签: angularjs permissions angular-ui-router query-string params


【解决方案1】:

angular-permission 的当前实现 (2.2.3) 允许您在转换(授权)和重定向状态(未授权)中传递参数。请更新库,现在一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 2017-06-20
    • 2023-02-09
    • 2016-08-08
    • 2013-10-03
    相关资源
    最近更新 更多