如何在多个Web项目中共享信息,欢迎讨论

04-10-15 lijian
问题提出:如果用户在一个Web项目中登录并保存了用户信息,然后又跳转到另一个Web项目中(只能是超链或者sendRedirect),然而在第二个Web项目中要用到用户的基本信息和他对第二个Web项目中相应模块的操作权限(如页面内某些按钮是否可操作,这个权限应该在他跳转前初始化好),那么,怎么在第二个Web项目的相应模块中安全的获取所需要的信息呢?并且,如果用户直接输入第二个Web项目的那个模块,应该不允许访问,因为他没有经过第一个Web项目进行认证。如果把用户的信息以参数的形式写在那个地址的后面,这样也是不安全的,因为如果记住了那些参数,就可以直接进入模块了。

我的解决方法:

方法1:在第一个Web中保存用户信息到数据库中,并把一个认证码发个第二个Web,紧接着在第二个Web中根据认证码读取,读完后删除。如果读取读取不到,那么报错,说明用户无权访问。如果读取到了,那么显示,并且把这条记录删除,以免别人再去读取。在数据库中的记录主键可以用session id,这样保证用户每次登录都是不同的,以免下次(或别人)直接通过该认证码读取数据。

方法2:上面的这种方法是通过数据库中转,可能速度有点慢。可以把用户的信息和操作权限保存到第一个Web中的一个静态Map中,作一个Servlet专门负责与第二个Web通信,发送给第二个Web的参数除了那个认证码,还要有第一个Web的地址,第二个Web获取通信地址,根据认证码通过Url的connection来取得Servlet中的信息,同样,取走后删除信息。也就是说,方法1通过数据库中转,方法2通过一个静态的Map(或其他的东西,但要保证多用户访问)中转。

我不知道还有没有其他更好的方法,希望大家讨论。

还有,方法1效率低,方法2速度快,我认为比较好,但是如果第一个Web是发布在一个集群中,那怎么办呢?这是我正面临的问题!

banq
2004-10-17 10:05
以前讨论过。在客户端实现:

1. 使用加密cookie

2. 使用applet,这个方案安全比较好。

猜你喜欢