python 和 java 登录互通问题

100 篇文章 0 订阅
在大型网站中需要保存用户的会话,通常有这么几种方式:

1.把session放在应用服务器
这也是tomcat默认方式,sessionId保存在cookie,sessionStore作为文件保存在tomcat的目录。这种方式有很大的局限性就是应用是有状态的。

2.把session放在cookie
把sessionStore加密之后放在cookie,每次请求的时候从浏览器提交过来,这种方式能解决应用无状态,但也存在2个小问题。

1. cookie安全问题,只要任何人拦截到cookie就相当于获取了用户的密码。 (可以通过增加时间戳或者把用户IP地址也记录下来提高安全性)
2. 用户每次访问页面都带上cookie,带宽浪费。

3.把session放在db
这也是django默认的做法,用户每次登录的时候会产生一个sessionid,通过sessionid从数据库查询出session,如果找不到就insert一条新的,可以想象这个数据量是非常巨大,可以采用reids替换。


今天需要解决java 和python 登录互通的问题,python默认是通过cPickle序列化的,java并不能反序列化cPickle产生的数据,
一种思路就是python 通过json格式来序列化,这样java就能认识了,但发布的时候却失败了,原因第三方登录会往是session里存放一些对象,比如:


class OAuthToken(object):
"""OAuthToken is a data type that represents an End User via either an access
or request token.

key -- the token
secret -- the token secret

"""
key = None
secret = None
callback = None
callback_confirmed = None
verifier = None

def __init__(self, key, secret):
self.key = key
self.secret = secret


token = OAuthToken("token","38fds7979808opin7879878")
print json.dumps(token)

这种对象json会失败的。怎么解决呢?

方案1: 通过YAML
方案2: 通过google protocol buffer
方案3: 只把userid序列化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值