You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Django的MSAL IdentityContextData类添加id_token_claims属性

解决方案

直接修改context.py中的IdentityContextData类,为_id_token_claims添加@property和setter方法,模仿现有username属性的实现方式即可:

class IdentityContextData:
    # 保留原有类代码...

    @property
    def id_token_claims(self):
        """获取ID Token中的声明数据"""
        return self._id_token_claims

    @id_token_claims.setter
    def id_token_claims(self, value):
        """设置ID Token声明数据"""
        self._id_token_claims = value

    # 原有clear方法保持不变,内部仍直接操作self._id_token_claims
    def clear(self):
        # 原有代码...
        self._id_token_claims = None
        # 原有代码...

修改完成后,你就可以通过以下方式安全访问ID Token中的邮箱等数据,不会再触发受保护属性警告:

# 获取邮箱
email = request.identity_context_data.id_token_claims.get("email")
# 设置新的声明数据(如果有需要)
request.identity_context_data.id_token_claims = new_claims_data

这种实现方式和类中已有的username属性逻辑一致,既遵循了Python的封装规范,又能满足你直接访问ID Token声明数据的需求,同时不会影响原有clear方法的功能。

内容的提问来源于stack exchange,提问作者Melreen Lobo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 15:17:01