关于网站跨语言要解决的问题

jing31 发布于 2010/08/02 09:33
阅读 833
收藏 4

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

在解决网站跨语言的时候,有几个问题想不太明白:

1:session共享如何解决,貌似用cookie 代替 session 是是最直接的解决方案,但是如何实现呢?

  我现在想到的方案是,在数据库端存储cookie的key值和用户ID的对应关系。

  用filter做验证的时候,用本地cookie对应数据库的cookie的key,如果能找到则正常操作,如果没有找到则说明没有登陆。

  但是还有一些问题不知道如何解决,比如说,http://www.oschina.net/bbs/new_thread,这个是发帖子的时候,如果知道是谁发的?

  以前用session内存储用户信息,直接可以在session内取得当前用户ID,如果用cookie如何取得当前操作用户是谁呢?

  不知道我有没有描述清楚问题。

2:关于cache的应用,如果用java的话,我倾向于在memcache里面存储java对象(数据bean),如果跨语言的话,

  用相同的方法可以计算出对应的key值并取得对象,但是取得的是java对象,如果转换为其他语言的对象呢?

 

还有没有其他问题呢?大家也可以提出来一起讨论一下~

加载中
0
红薯
红薯

1. cookie 的问题
oschina的做法是将用户id和密码哈希根据一定的算法生成一个长字符串,然后保存在cookie中,在读取cookie的时候,从中解析出用户id,并到数据库中查询对应的记录,然后判断密码哈希是否正确,正确则是合法的cookie,否则非法。这样的算法就跟语言无关了。

可参考OSChina的做法

2. 缓存的问题
缓存中不能存放Java对象,可尝试用XML或者JSON来表示java对象,这样其他语言也方便解析

0
jing31
jing31

引用来自#2楼“红薯”的帖子

1. cookie 的问题
oschina的做法是将用户id和密码哈希根据一定的算法生成一个长字符串,然后保存在cookie中,在读取cookie的时候,从中解析出用户id,并到数据库中查询对应的记录,然后判断密码哈希是否正确,正确则是合法的cookie,否则非法。这样的算法就跟语言无关了。

可参考OSChina的做法

2. 缓存的问题
缓存中不能存放Java对象,可尝试用XML或者JSON来表示java对象,这样其他语言也方便解析

1:这就意味着每次操作都要到本地取得一次cookie了?

2:好像也只有这样的办法了,在cache操作的统一接口中处理一下就可以了。只不过现在javabean转json,json转javabean的效率问题确实不敢恭维。

0
红薯
红薯

1. 每次取一次 cookie 这有什么问题呢?这个cookie在每次请求的时候浏览器都会送上来的

2. javabean 转 json 的效率很低吗?

你应该是担心性能问题,呵呵,在一个网站中,这两个问题绝对不是影响性能的主要因素。

0
jing31
jing31

引用来自#4楼“红薯”的帖子

1. 每次取一次 cookie 这有什么问题呢?这个cookie在每次请求的时候浏览器都会送上来的

2. javabean 转 json 的效率很低吗?

你应该是担心性能问题,呵呵,在一个网站中,这两个问题绝对不是影响性能的主要因素。

恩,第一个想通了~

第二个,我现在用的json-lib转的,复杂一点的结构就要200多ms的消耗,单个处理看似不大,不知道整体来看这个消耗算不算大呢?

0
郑雨涵
郑雨涵

引用来自#3楼“jing31”的帖子

引用来自#2楼“红薯”的帖子

1. cookie 的问题
oschina的做法是将用户id和密码哈希根据一定的算法生成一个长字符串,然后保存在cookie中,在读取cookie的时候,从中解析出用户id,并到数据库中查询对应的记录,然后判断密码哈希是否正确,正确则是合法的cookie,否则非法。这样的算法就跟语言无关了。

可参考OSChina的做法

2. 缓存的问题
缓存中不能存放Java对象,可尝试用XML或者JSON来表示java对象,这样其他语言也方便解析

1:这就意味着每次操作都要到本地取得一次cookie了?

2:好像也只有这样的办法了,在cache操作的统一接口中处理一下就可以了。只不过现在javabean转json,json转javabean的效率问题确实不敢恭维。

难道你觉得你每次需要cookie的时候跟客户端发起一次连接去取?浏览器本来就header域里附上了。

0
郑雨涵
郑雨涵

引用来自#5楼“jing31”的帖子

引用来自#4楼“红薯”的帖子

1. 每次取一次 cookie 这有什么问题呢?这个cookie在每次请求的时候浏览器都会送上来的

2. javabean 转 json 的效率很低吗?

你应该是担心性能问题,呵呵,在一个网站中,这两个问题绝对不是影响性能的主要因素。

恩,第一个想通了~

第二个,我现在用的json-lib转的,复杂一点的结构就要200多ms的消耗,单个处理看似不大,不知道整体来看这个消耗算不算大呢?

建议jackson,性能比较好。

另外,跨语言,可以学学WS里的定义方式。

0
李永波
李永波

两个想法都不错

0
jing31
jing31

跨语言的web应用还有其他可能遇到的麻烦吗?

0
寻找技术合伙人111

其实跨站SESSION相对来说容易解决的,共享SESSION就OK了,JAVA我不太清楚,反正PHP是有一个相对应的函数来统一存储SESSION,当然如果有memcache,也可以用它来实现SESSION的共享,COOKIE跨域,貌似设置还是有点复杂的

0
jing31
jing31

引用来自#7楼“xiaojia2008”的帖子

引用来自#5楼“jing31”的帖子

引用来自#4楼“红薯”的帖子

1. 每次取一次 cookie 这有什么问题呢?这个cookie在每次请求的时候浏览器都会送上来的

2. javabean 转 json 的效率很低吗?

你应该是担心性能问题,呵呵,在一个网站中,这两个问题绝对不是影响性能的主要因素。

恩,第一个想通了~

第二个,我现在用的json-lib转的,复杂一点的结构就要200多ms的消耗,单个处理看似不大,不知道整体来看这个消耗算不算大呢?

建议jackson,性能比较好。

另外,跨语言,可以学学WS里的定义方式。

下午试验了一下jackson,确实比json-lib用起来还要顺手一些。

而且转换效率比json-lib高不少。

这样cache中存储json格式的数据更容易了。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部