【发布时间】:2019-07-16 14:37:51
【问题描述】:
我正在处理 oauth1 授权,目前我正在将一个序列化的 OAuth1Session 对象存储在一个看起来很昂贵的 cookie 中(对象的大小为 2.6kb)。
据我了解,最好保留对访问服务很重要的信息,即访问令牌。因此,我正在考虑两种方法。
oauthSession = OAuth1Session(
client_key=CLIENT_KEY,
client_secret=CLIENT_SECRET,
resource_owner_key=oauthAccessTokens.get('oauth_token'),
resource_owner_secret=oauthAccessTokens.get('oauth_token_secret'))
session['serializedSession'] = pickle.dumps(oauthSession)
session['oauthToken'] = oauthAccessTokens.get('oauth_token')
session['oauthTokenSecret'] = oauthAccessTokens.get('oauth_token_secret')
然后根据请求,我使用 inSession 装饰器检查 serializedSession 是否在 session 中,并在每次发送请求时加载对象:
@inSession
def get(serviceRequestURL):
oauthSession = pickle.loads(session['serializedSession'])
return processResponse(oauthSession.get(serviceRequestURL))
另一种方法是存储两个访问令牌并在请求上创建一个新的OAuth1Session 对象并检查这两个令牌是否存在于会话中:
@inSession
def get(serviceRequestURL):
oauthSession = oauthSession = OAuth1Session(
client_key=CLIENT_KEY,
client_secret=CLIENT_SECRET,
resource_owner_key=session['oauthToken'],
resource_owner_secret=session['oauthTokenSecret'])
return processResponse(oauthSession.get(serviceRequestURL))
这似乎是微小的改进,但我不确定哪种方法最好,或者是否有更好的方法。重新创建或重新加载对象的整个想法似乎不是一个好的解决方案,因此我正在寻找一种更好的方法来减小 cookie 大小并避免重新创建或重新加载对象。
【问题讨论】: