为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
相关产品推荐
相关产品推荐

