【开源中国 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对象,如果转换为其他语言的对象呢?
还有没有其他问题呢?大家也可以提出来一起讨论一下~
1. cookie 的问题
oschina的做法是将用户id和密码哈希根据一定的算法生成一个长字符串,然后保存在cookie中,在读取cookie的时候,从中解析出用户id,并到数据库中查询对应的记录,然后判断密码哈希是否正确,正确则是合法的cookie,否则非法。这样的算法就跟语言无关了。
可参考OSChina的做法。
2. 缓存的问题
缓存中不能存放Java对象,可尝试用XML或者JSON来表示java对象,这样其他语言也方便解析
引用来自#2楼“红薯”的帖子
1. cookie 的问题
oschina的做法是将用户id和密码哈希根据一定的算法生成一个长字符串,然后保存在cookie中,在读取cookie的时候,从中解析出用户id,并到数据库中查询对应的记录,然后判断密码哈希是否正确,正确则是合法的cookie,否则非法。这样的算法就跟语言无关了。
可参考OSChina的做法。
2. 缓存的问题
缓存中不能存放Java对象,可尝试用XML或者JSON来表示java对象,这样其他语言也方便解析
1:这就意味着每次操作都要到本地取得一次cookie了?
2:好像也只有这样的办法了,在cache操作的统一接口中处理一下就可以了。只不过现在javabean转json,json转javabean的效率问题确实不敢恭维。
1. 每次取一次 cookie 这有什么问题呢?这个cookie在每次请求的时候浏览器都会送上来的
2. javabean 转 json 的效率很低吗?
你应该是担心性能问题,呵呵,在一个网站中,这两个问题绝对不是影响性能的主要因素。
引用来自#4楼“红薯”的帖子
1. 每次取一次 cookie 这有什么问题呢?这个cookie在每次请求的时候浏览器都会送上来的
2. javabean 转 json 的效率很低吗?
你应该是担心性能问题,呵呵,在一个网站中,这两个问题绝对不是影响性能的主要因素。
恩,第一个想通了~
第二个,我现在用的json-lib转的,复杂一点的结构就要200多ms的消耗,单个处理看似不大,不知道整体来看这个消耗算不算大呢?
引用来自#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域里附上了。
引用来自#5楼“jing31”的帖子
引用来自#4楼“红薯”的帖子
1. 每次取一次 cookie 这有什么问题呢?这个cookie在每次请求的时候浏览器都会送上来的
2. javabean 转 json 的效率很低吗?
你应该是担心性能问题,呵呵,在一个网站中,这两个问题绝对不是影响性能的主要因素。
恩,第一个想通了~
第二个,我现在用的json-lib转的,复杂一点的结构就要200多ms的消耗,单个处理看似不大,不知道整体来看这个消耗算不算大呢?
建议jackson,性能比较好。
另外,跨语言,可以学学WS里的定义方式。
两个想法都不错
跨语言的web应用还有其他可能遇到的麻烦吗?
其实跨站SESSION相对来说容易解决的,共享SESSION就OK了,JAVA我不太清楚,反正PHP是有一个相对应的函数来统一存储SESSION,当然如果有memcache,也可以用它来实现SESSION的共享,COOKIE跨域,貌似设置还是有点复杂的
引用来自#7楼“xiaojia2008”的帖子
引用来自#5楼“jing31”的帖子
引用来自#4楼“红薯”的帖子
1. 每次取一次 cookie 这有什么问题呢?这个cookie在每次请求的时候浏览器都会送上来的
2. javabean 转 json 的效率很低吗?
你应该是担心性能问题,呵呵,在一个网站中,这两个问题绝对不是影响性能的主要因素。
恩,第一个想通了~
第二个,我现在用的json-lib转的,复杂一点的结构就要200多ms的消耗,单个处理看似不大,不知道整体来看这个消耗算不算大呢?
建议jackson,性能比较好。
另外,跨语言,可以学学WS里的定义方式。
下午试验了一下jackson,确实比json-lib用起来还要顺手一些。
而且转换效率比json-lib高不少。
这样cache中存储json格式的数据更容易了。