最近两天在项目中碰到,一个很奇怪的问题。同一个账号多次切换登录时,会出现这个账号的信息在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?... 
这样的地址。

resin中关于url rewrite来传递jsessionid的问题的更多相关文章

  1. 翻译:为 URL Rewrite 模块创建重写规则

    原文名称:Creating Rewrite Rules for the URL Rewrite Module 原文地址:http://www.iis.net/learn/extensions/url- ...

  2. 使用URL Rewrite实现网站伪静态

    下载urlwrite包 将urlrewrite-***.jar复制到web应用lib文件夹下 web.xml中配置URL Rewrite: 例: <filter> <filter-n ...

  3. Windows10中的IIS10安装php manager和IIS URL Rewrite 2.0组件的方法

    Windows10中自带的Server:Microsoft-IIS/10.0,然后这个10却让原本支持组件无法安装了,php manager组件安装时提示“必须安装IIS7以上才可以安装”.那是不是真 ...

  4. 在ASP.NET MVC中使用IIS级别的URL Rewrite

    原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的文章(2.3.4),把ASP.NET平台上进行URL Rewrit ...

  5. mvc中view与controll之间传递参数时,可以使用url进行传递

    mvc中view与controller之间传递参数时,可以使用url进行传递,但是在url的地址中需要加上“id=123”这样的东西才行. 具体如代码: window.location.href = ...

  6. ASP.NET Core中怎么实现Url rewrite功能

    我们可以使用ASP.NET Core的中间件来实现Url rewrite功能,下面我们定义一个中间件ReplaceQueryStringMiddleware来替换Http请求中的Url参数即Query ...

  7. Android 通过URL scheme 实现点击浏览器中的URL链接,启动特定的App,并调转页面传递参数

    点击浏览器中的URL链接,启动特定的App. 首先做成HTML的页面,页面内容格式如下: <a href="[scheme]://[host]/[path]?[query]" ...

  8. Traefik2.X 版本 中 URL Rewrite 的使用

    文章转载自:https://mp.weixin.qq.com/s?__biz=MzU4MjQ0MTU4Ng==&mid=2247484594&idx=1&sn=becbe567 ...

  9. 在IIS 中如何配置URL Rewrite,并且利用出站规则保持被重写的Cookie的域

    Url Rewrite配置 xx.aa.com/bb/test1.aspx 会重写到 bb.aa.com/test1.aspx 具体怎么配置入站 出站规则 结果:

随机推荐

  1. Lintcode: Hash Function && Summary: Modular Multiplication, Addition, Power && Summary: 长整形long

    In data structure Hash, hash function is used to convert a string(or any other type) into an integer ...

  2. Echarts使用及动态加载图表数据 折线图X轴数据动态加载

    Echarts简介 echarts,缩写来自Enterprise Charts,商业级数据图表,一个纯JavaScript的图表库,来自百度...我想应该够简洁了 使用Echarts 目前,就官网的文 ...

  3. kafka集群监控工具之三--kafka Offset Monitor

    1.介绍 一般情况下,功能简单的kafka项目  使用运维命令+kafka Offset Monitor 就足够用了. 2.使用2.1 部署 github下载jar包 KafkaOffsetMonit ...

  4. Python: 字符串开头或结尾匹配str.startswith(),str.endswith()

    问题 需要通过指定的文本模式去检查字符串的开头或者结尾,比如文件名后缀,URLScheme 等等. 解决方案 1.检查字符串开头或结尾的一个简单方法是使用str.startswith() 或者是str ...

  5. 防DNS劫持教程,手动修复本地DNS教程

    防DNS劫持教程,手动修复本地DNS教程 该如何避免DNS劫持的问题呢?1. 请不要轻易连接陌生网络.2. 可以通过手动指定DNS(DNS用于将域名正确转换为您想访问的网站的作用),修改后你的网络应用 ...

  6. Linux下配置多个tomcat多个域名

    Linux下配置多个tomcat多个域名复制tomcat:mkdir /home/server/testcp -rf /home/server/shichuan/* /home/server/test ...

  7. 优化 MySQL: 3 个简单的小调整

    我并不期望成为一个专家级的 DBA,但是,在我优化 MySQL 时,我推崇 80/20 原则,明确说就是通过简单的调整一些配置,你可以压榨出高达 80% 的性能提升.尤其是在服务器资源越来越便宜的当下 ...

  8. servlet之一(概念/如何写/运行/错误提示/乱码处理)

    # 1. 什么是Servlet?   sun公司制订的一种用来扩展web服务器功能的组件规范. ## (1) 扩展web服务器功能(servlet的产生背景)       web服务器只能处理静态资源 ...

  9. [省选模拟]array

    这题真是太神了! 考试的时候冲着四十分写了个$O(\frac{N^3logN}{32})$的制杖算法. 然后就狠狠的T掉了.如果没有充分的理解单调性和应用单调性就只有10分的傻逼分拿了. 首先考虑枚举 ...

  10. 使用requireJS加载不符合AMD规范的js文件:shim的使用方式和实现原理

    原文链接: http://www.bubuko.com/infodetail-671521.html