首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Satellizer和角度许可互操作

Satellizer和角度许可互操作
EN

Stack Overflow用户
提问于 2016-09-05 09:20:02
回答 2查看 285关注 0票数 0

我正在尝试使用angular-permission和Satellizer来实现基于角色的身份验证功能。这个想法是让Satellizer从API和angular权限中获取一个令牌,以基于所述令牌来确定角色。

app.js:

代码语言:javascript
复制
.run(function(PermRoleStore, $auth) {
    PermRoleStore.defineManyRoles({
        'USER' : function() { return $auth.isAuthenticated('USER'); },
        'ADMIN' : function() { return $auth.isAuthenticated('ADMIN'); }
    });
    console.log(PermRoleStore.getStore());
})


.config(function ($authProvider, $stateProvider) {

        // USER AUTHORIZED STATES
        $stateProvider.state('Dashboard', {
            url: '/dashboard',
            templateUrl: 'views/dashboard.html',
            controller: 'Dashboard',
            data: {
                permissions: {
                    only: ['USER'],
                    redirectTo: function() {
                        return {
                            state: 'signup',
                            options: {
                                reload: true
                            }
                        };
                    }
                }
            }
        })
});

$auth.isAuthenticated:

代码语言:javascript
复制
    isAuthenticated = function(roleArg) {
      var token = storage.get(tokenName);

      if (roleArg === null || 'undefined') {
        roleArg = 'ANONYMOUS';
      }

      var role = token.role;
      if (roleArg != role) {
        console.log('role: ' + role);
        console.log('roleArg: ' + roleArg);
        console.log('Permission denied');
        return false;
      } else {
        return true;
    };

我遇到的问题是,我甚至看不到试图解决的PermRoleStore方法。应用程序正常加载,但是它的行为就好像它没有经过身份验证一样。

EN

回答 2

Stack Overflow用户

发布于 2016-09-05 13:02:50

首先,看起来你忘了

代码语言:javascript
复制
return true;

$auth.isAuthenticated中。

为了调试,你能给我们一个柱塞的例子吗?我会在isAuthenticated中使用

代码语言:javascript
复制
console.log(store);

检查权限存储数据。尝试:

代码语言:javascript
复制
PermPermissionStore.getStore();
票数 0
EN

Stack Overflow用户

发布于 2017-06-16 21:27:48

您是否尝试将用户角色保存到后端satellizer JWT中的data key中,并通过$auth.getPayload()函数访问该JWT数据。

代码语言:javascript
复制
.run(function (PermRoleStore, $auth) {
PermRoleStore    
.defineRole('ADMIN', function () {
  if($auth.getPayload()) {

  if ($auth.getPayload().data.role === 'ADMIN') {
    return true;
  }
  else {
    return false;
  }
}
else {
  return false;
}
});
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39322840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档