
authentic如何把roles返回给sso客户端
在 authentik 中,Role 并不是直接挂在 User 对象上的,而是:
User → Group → Role。
所以要想拿到“用户真正拥有的所有 Role”,必须先遍历用户所在的 Group,再把每个 Group 关联的 Role 收集起来并去重。
User → Group → Role。
所以要想拿到“用户真正拥有的所有 Role”,必须先遍历用户所在的 Group,再把每个 Group 关联的 Role 收集起来并去重。
把你的映射改成下面这样即可(已用你当前可用的变量名
user
和 request.user
做了兼容):# 取用户所在的所有组的所有角色,去重后返回 roles = set() for group in request.user.ak_groups.all(): roles.update(group.roles.all()) return { "_debug_all_attrs": list(user.attributes.keys()), # 调试用,可删 "employee_id": user.attributes.get("employee_id", ""), "employeeid": user.attributes.get("employeeid", ""), "department": user.attributes.get("department", ""), "roles": [r.name for r in roles], # 角色名称列表 }
============ 欢迎各位老板打赏~ ===========

