hi45 2010-10-13 00:18
浏览 164
已采纳

关于Acegi 在 复合环境下的奇妙错误,请教!!

首先简单描述下项目的环境
开发环境: Tomcat 6.0 + apache2.2 + eclipse3.4 + jdk 6
正式环境: Tomcat 6.0 群集 + apache2.2 + jk mod + Echcache 页面缓存 + jdk 6
[b]注意: 正式环境是在一台机器上,配置 apache 和多个 tomcat[/b]

Acegi 1.0.7 版本

Acegi 设定的权限管控为 所有页面都可以访问,但是填写资料,需要登陆操作

首页是 index.jsp , 其他链接,均为 ***.action 的方式

首页的登陆框 实现 acegi 的 ajax 登陆操作,登陆成功,登陆框会切换成 用户名 + 欢迎词 + 退出,登陆不成功,会提示密码或帐号错误,继续登陆。

在开发环境下,一切正常。

部署到正式环境后,出现下面两种错误:
1、输入用户名密码后,登陆成功,但是 登陆框不会切换,点击任何一个栏目进入后,在页面顶部会显示 欢迎 用户名 (表示登陆成功,如果登陆不成功,这里会显示 : 登陆 注册 的链接 )

2、由于正式环境采用了 apache + jk + tomcat 集群 的方式, 在 worker 的配置中,设定了 sticky_session = 1。 其他配置属于正常配置 ,这里出现了一个奇怪的事情: 第一次访问首页时, 登陆框会显示: 欢迎 某某某 的字样,也就是是已经登陆了,但是我还没有登陆,而且 某某某 的用户名是随机显示的,当点击 个人资料时,却又跳转到 登陆画面,显然,当前的这个 session 并未登陆成功,还是需要登陆操作,登陆成功后 , 任何页面的顶部都会正确显示 用户名,只有 index.jsp 页面不会正常显示。

页面顶部采用 header.jsp 页面编写, 在查看是否有权限时,是通过 这样的写法判断是否有用户登陆,然后获取用户名,任何情况下,都不会出错,首页也是同样的写法,可是,却会出现以上问题。。

请教各位。。是不是因为复合环境下,会出现以上错误?

我做过如下测试:
1、将 集群的 tomcat 关闭到只剩下一个,然后测试, 不会出现 别人的用户名出现在 index.jsp 页面, 但是登陆依旧存在问题

2、将 header.jsp 的代码 copy 到 index.jsp 页面,还是无法起作用

3、将 echcache 的页面缓存关闭, 发现问题好转,是否 页面缓存会让 index.jsp 页面无法正常刷新?

另外,正式环境是不能关闭 页面缓存,效率会差很多。。。

还请各位指点!!

  • 写回答

1条回答 默认 最新

  • uncontrolsheep 2010-10-14 19:34
    关注

    看您的描述应该是页面缓存的原因,没研究过页面缓存的原理,我觉得原则是缓存应该缓存的东西,如果不适用于缓存的情况您利用缓存可能得到反效果,虽然效率高了,但是正确性得不到保证,效率再高也没用啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 怎么在stm32门禁成品上增加记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 解riccati方程组