`
san_yun
  • 浏览: 2652294 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

python 和 java 登录互通问题

 
阅读更多
在大型网站中需要保存用户的会话,通常有这么几种方式:

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序列化

分享到:
评论

相关推荐

    java,php,python AES 加解密互通

    在标题"java,php,python AES 加解密互通"中,我们关注的是使用不同的编程语言——Java、PHP和Python,实现AES(Advanced Encryption Standard)加密算法的互操作性。AES是一种广泛采用的对称加密标准,因其高效和...

    c/c++ 与java互通 AES加密解密,算法ECB

    一个vc6.0一个myeclipse,本帖是修复贴,原帖地址c/c++ 与java互通 AES加密解密,算法ECB/PKCS5PADDING http://download.csdn.net/download/wangsonghiweed/4328267 -来自CSDN,有童鞋反映有问题,我修复了

    Python在物联网中的应用与发展综述.pdf

    - **Jython**:针对Java平台的Python实现,可以在Java虚拟机上运行。 - **IronPython**:面向.NET框架的Python实现,可以利用.NET的各种特性。 ##### 版本特点与对比 - **CPython**:成熟稳定,拥有庞大的社区支持...

    java链表 个人总结

    本文将结合个人学习心得,深入探讨Java链表的核心概念、实现方式以及与其他编程语言的互通性。 首先,链表是一种线性数据结构,与数组不同,它的元素在内存中不是连续存储的。每个元素(称为节点)包含两部分:数据...

    两个串口互通数据

    然后,可以使用编程语言(如C、Python、Java等)中的串口库来编写通信程序。程序通常包含发送数据和接收数据两部分,发送端会按照设定的格式将数据编码并发送出去,接收端则会解码接收到的数据,并进行相应的处理。 ...

    java-javascript-graalvm:使用GraalVM进行Java和JavaScript代码互操作性的示例项目

    GraalVM是一个高性能的运行时环境,它支持多种语言的执行,包括Java、JavaScript,甚至其他如Python和Ruby。它的一个核心特性就是提供语言间互操作性,使得开发者可以在同一个应用程序中无缝地混合使用不同语言的...

    本项目是 Hprose 的 Python 版本实现 .rar

    Hprose 是高性能远程对象服务引擎(High Performance Remote Object Service Engine)的缩写。...通过 Hprose ,你就可以在这些语言之间方便高效的实现互通了。 本项目是 Hprose 的 Python 2.3+ 版本实现。

    Hprose Java 使用说明

    它支持多种语言如.NET、Java、Delphi、Objective-C、ActionScript、JavaScript、ASP、PHP、Python、Ruby、C++、Perl等,通过Hprose可以在这些语言之间实现方便且高效的互通。 **Hprose**的特点在于其高效的数据传输...

    Java端AES/CBC/PKCS5Padding加解密代码

    Java端AES/CBC/PKCS5Padding加解密代码,与Python端from cryptography.fernet import Fernet模块的加解密保持一致,两端加密后的数据互通,本代码仿照Fernet的加解密流程进行移植。

    Python的不同实现.pdf-综合文档

    Jython允许Python代码和Java代码进行交互,并且可以被Java应用程序所调用。它的主要优势在于可以充分利用Java生态系统丰富的资源和框架。 第三种实现是***,它允许Python代码运行在.NET平台上,提供了与Jython类似...

    python操作小程序云数据库实现简单的增删改查功能

    不止python,你可以利用任何语言那实现通过...这里通过 python 作为演示来进行简单的测试,当然你也可以使用 java , php 等任何你熟悉的语言进行编码。 demo演示 其实实现起来还是比较简单的,通过小程序的 APPID 和

    likeadmin是一套快速开发管理后台,使用流行的技术栈Python3.rar

    likeadmin是一套快速开发通用后台,基于Vue3、elementPlus,结合PHP、Java、Python、Go等主流后端语言搭建,集成用户权限、代码生成器、表单设计、岗位部门、云存储、素材中心、微信配置、API模块等一系列开箱即用...

    行业文档-设计装置-学校与学生家长互通短信的方法及实现该方法的平台系统.zip

    实现这样的平台系统通常会涉及后端开发(如使用Java、Python或Node.js)、前端开发(HTML、CSS、JavaScript)、数据库设计(如MySQL、MongoDB)、移动应用开发(React Native、Swift或Java)以及服务器部署(如AWS、...

    Rsa 私钥加密 公钥解密

    这个压缩包文件的标题和描述提及了“Rsa 私钥加密 公钥解密”,这意味着我们将探讨如何使用RSA算法进行私钥加密和公钥解密的过程,以及在不同编程语言如JAVA、C#、PHP之间的互通性。 首先,RSA加密的基础是大数因子...

    AES加密源码 可与其他语言互通

    这意味着你可以用Java加密数据,然后用Python或者C#解密,只要保持相同的密钥和工作模式,结果就会一致。 要深入了解这个源码,你需要打开"content.txt"查看具体的实现细节,包括加密函数的调用方式、密钥管理以及...

    MQTT实现前后端实时通信

    **MQTT(Message Queuing Telemetry Transport)**是一种轻量级的发布/订阅式消息传输协议,主要用于远程位置连接和低带宽环境,特别适合于物联网(IoT)中的设备到设备通信。在本文中,我们将深入探讨如何利用MQTT...

    华为云服务 HCNP 认证考试模拟题.docx

    15. **华为CSE支持的语言**:华为CSE支持Java、Node.js、PHP和Python等多种语言的微服务接入与互通,但不支持C语言。 16. **CSE微服务全生命周期管理**:CSE提供了服务创建、CICD(持续集成/持续部署)、服务运维和...

    基于ssm+mysql的本科生毕业设计选题系统源码数据库论文.docx

    该系统旨在帮助高校教师和学生之间实现高效便捷的毕设信息互通,解决毕业设计选题和审核过程中的工作量增加问题。 一、毕业设计选题系统的需求分析 毕业设计是高校教学管理的重要工作内容之一,在高校毕业设计数量...

    数字技术应用 考试试题.zip

    编程语言是实现数字技术应用的基础工具,如Python、Java、C++等,它们被用来编写软件程序,解决实际问题。数据结构如数组、链表、树等,是高效存储和处理数据的关键,而算法则是解决问题的具体步骤,如排序算法、...

    hprose 1.3文档

    它支持众多语言,例如.NET,Java,Delphi,Objective-C,ActionScript,JavaScript,ASP,PHP,Python,Ruby,C++,Perl等语言,通过Hprose可以在这些语言之间实现方便且高效的互通。 使用Hprose制作一个简单的...

Global site tag (gtag.js) - Google Analytics