zoukankan      html  css  js  c++  java
  • resin中关于url rewrite来传递jsessionid的问题

    最近两天在项目中碰到,一个很奇怪的问题。同一个账号多次切换登录时,会出现这个账号的信息在session中找不到,虽然可以登录成功,但是之后这个用户信息好像没有保存到session中一样,或者是被改变了,之前我一直是以为被改变了,后来发现错了。

      今天,在公司的系统架构师的帮助下,终于解决了这个问题。

      首先我们使用的resin的配置是 

      <session-config>
            <enable-url-rewriting>false</enable-url-rewriting>
        <!--<use-persistent-store>true</use-persistent-store>-->
          </session-config>

      这样的。这样禁用了jsessionid以cookie的方式在页面传递。但是我们的前端是用jsessionid放到URL来进行会话的维持的。

      将jsessionid放到url中,这样可以不使用cookie。 
      不使用cookie,可以避免遭遇用户禁用cookie的情况。另外,有安全性方面的考虑

    使用url rewrite有两种方式:

    1. http://***/wmail/welcome.action;jsessionid=abcLFJLwoeurlsjdlf?... 
    这种是将jsessionid放在action后面

    需要修改resin/conf/resin.conf中的配置为: 
    <session-config> 
    <enable-cookies>false</enable-cookies> 
    <enable-url-rewriting>true</enable-url-rewriting> 
    </session-config>

    2. http://***/~jid=abcLFJLwoeurlsjdlf/wmail/welcome.action?...

    除了要按照前面的同样修改resin/conf/resin.conf中的配置为: 
    <session-config> 
    <enable-cookies>false</enable-cookies> 
    <enable-url-rewriting>true</enable-url-rewriting> 
    </session-config>

    还要在resin/conf/resin.conf中增加alternate-session-url-prefix的设置: 
    <server> 
    <class-loader>...</class-loader> 
    <alternate-session-url-prefix>/~jid=</alternate-session-url-prefix> 
    ...... 

    注意alternate-session-url-prefix的位置,不是在<session-config>里面

    测试中发现,按照这种方式配置后,url被重写为 
    http://***/~jid=abcLFJLwoeurlsjdlf/wmail/welcome.action?...

    在浏览器中访问会产生http 404 file not found 错误,经反复检查(吐血的经历),发现需要修改resin/conf/resin.conf中的配置: 

    <server> 
    ...... 
    <host id="" root-directory="."> 
    <!-- 
    <web-app id="/" document-directory="webapps/ROOT"/> 
    --> 
    </host> 
    </server> 
    将<web-app id="/" document-directory="webapps/ROOT"/>的设置屏蔽后才能正常访问 
    http://***/~jid=abcLFJLwoeurlsjdlf/wmail/welcome.action?... 
    这样的地址。

  • 相关阅读:
    Mysql TEXT类型长度
    php中的||和or的区别 优先级
    常用的排序算法的时间复杂度和空间复杂度
    ThinkPHP 多应用多模块建立方式
    phpcms v9 后台添加修改页面空白页问题解决方法
    linux中nginx重定向方法总结
    Nginx的主要配置参数说明
    Apache多网站虚拟目录域名
    xampp命令
    (转载)处理SQL解析失败导致share pool 的争用
  • 原文地址:https://www.cnblogs.com/xyhz0310/p/6387951.html
Copyright © 2011-2022 走看看