✅已解决 | 用户登录后如何获取他的角色或权限?

我想在python中找到用户登录后,查询这个用户是哪个组哪个角色,有什么权限的代码示例,从哪里找?我目前已经通过 code 返回的值得到 token了,也得到用户详细信息清单了。下一步如何处置分析他的权限?不知道在哪里找示例代码,就在这里提出问题了,谢谢!
(此网页: Authing - Python | Authing 文档 未详细说明。)

期待回复, 期待回复。补足8字。 :joy:

  1. 获取用户的角色列表:管理用户 | Authing 文档

  2. 获取用户的分组列表:管理用户 | Authing 文档

  3. 获取用户被授权的资源列表:管理资源与权限 | Authing 文档

  1. 获取用户被授权的资源列表:管理资源与权限 | Authing 文档
    中的这个调用,参数 user_id 是从哪里来?
def list_authorized_resources(self, user_id, namespace, resource_type=None):
  pass

我通过 通过 code 返回的值得到 token了,这里面的哪个是 user_id ?
{‘access_token’: ‘ey…V06JmVZE2oruBdiPo1hjCCrpew’, ‘expires_in’: 1209600, ‘id_token’: ‘eyJ…3txUqEcxhT89bBG-Xo’, ‘scope’: ‘openid profile phone email’, ‘token_type’: ‘Bearer’}
content.access_token: eyJhbGciOiJSUzI1NiIsIn…oruBdiPo1hjCCrpew
content: {‘sub’: ‘60f4ba36ae4603fcccf3ed9d’, ‘birthdate’: None, ‘family_name’: None, ‘gender’: ‘W’, ‘given_name’: None, ‘locale’: None, ‘middle_name’: None, ‘name’: None, ‘nickname’: ‘文’, ‘picture’: ‘https://fi…-1bc376f0f62c.jpg’, ‘preferred_username’: None, ‘profile’: None, ‘updated_at’: ‘2021-07-30T06:33:19.123Z’, ‘website’: None, ‘zoneinfo’: None, ‘phone_number’: None, ‘phone_number_verified’: False, ‘email’: ‘hhc@xxxxxd.com.cn’, ‘email_verified’: False}

id_token 里面的 sub 就是用户 ID

“id_token 里面的 aud 就是用户 ID” : 找不到 aud 字段。我后来发现是 sub 字段。网页文档中对此讲的一句话说:“一般是指用户ID”。试了管用。不过下面的代码不管用:

data = management_client.users.list_authorized_resources(

user_id=‘xxx’,
namespace=‘default’,
resource_type=‘DATA’
)

失败原因可能是 resource_type=‘DATA’ 的指派值不对。错误信息是:

authing.v2.exceptions.AuthingWrongArgumentException: invalid argument: resource_type

改为 None 后程序是通过了,但没有返回我指定的一个自定义资源权限,结果是:

user resource: {‘totalCount’: 1, ‘list’: [{‘code’: ‘’, ‘actions’: [’’]}]}

我自定义了一个资源权限 newspeech,给 user组和此用户,用户属于 user 组。但没有返回。

稍等 我们检查一下

我只希望某些已经注册(因为通常是允许先注册后用)的用户有权限使用一些限定权限的工作(链接或服务器代码)。给我和管理员有个机会在后台(authing的管理环境中)处理用户组或用户的某个自定义属性,我(程序员)在服务器代码做识别,能够确认这个登录用户有这个自定义识别值就行了。这个需求现在实现起来感觉有点绕… :joy:

您的这种使用场景,我们推荐使用角色来控制用户的权限,可以通过 管理用户 | Authing 文档 方法获取到用户的角色列表。

resource_type 这一行注释掉,会返回一点DATA权限,似乎还有漏的,我在一个应用中给此用户定义的那个还没有出来。

data = management_client.users.list_authorized_resources(
user_id=‘xxx’,
namespace=‘default’,
## resource_type=‘DATA’
)
{'totalCount': 1, 'list': [{'code': 'read:*', 'type': 'DATA', 'actions': ['*']}]}