最近两天在项目中碰到,一个很奇怪的问题。同一个账号多次切换登录时,会出现这个账号的信息在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. sql server 获取分隔字符串后的长度

    --方法1 --sql 分隔字符串,返回个数 CREATE function f_splitLen_1 (   @str varchar(1024),  --要分割的字符串   @split varc ...

  2. Servlet—基础

    什么是Servlet? 1 . jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代 码,Web容器将JSP的代码编译成JVM能够识别 ...

  3. FormatMessage函数

    DWORD WINAPI FormatMessage( __in DWORD dwFlags, __in_opt LPCVOID lpSource, __in DWORD dwMessageId, _ ...

  4. 论文笔记:2018 PRCV 顶会顶刊墙展

    Global Gated Mixture of Second-order Pooling for Imporving Deep Convolutional Neural Network(2018 NI ...

  5. mysql错误日志与通用日志

    错误日志 MySQL错误日志是记录MySQL 运行过程中较为严重的警告和错误信息,以及MySQL每次启动和关闭的详细信息. 1.错误日志路径查询 show variables like '%log_e ...

  6. 本地缓存之GUAVA

    项目开发中,很多配置数据需要缓存,一般来说,开发人员都会手动写HashMap,HashSet或者ConcurrentHashMap,ConcurrentHashSet缓存数据,但是这样的缓存往往存在内 ...

  7. Javascript 判断对象是否相等

    在Javascript中相等运算包括"==","==="全等,两者不同之处,不必多数,本篇文章我们将来讲述如何判断两个对象是否相等? 你可能会认为,如果两个对象 ...

  8. String和StringBuffer和StringBuilder

    String类 Java语言中用String类代表不可变的字符串,它是由任意多个字符组成的序列.程序中需要存储大量的信息时,一般都用String对象. 1.字符串初始化 JavaSE API为字符串对 ...

  9. 20135234mqy-——信息安全系统设计基础第九周学习总结

    第十章 系统级I/O 10.1 Unix I/O 一个Unix文就是一个m个字节的序列 Unix:将设备映射为文件的方式,允许Unix内核引出一个简单低级的应用接口 能够使得所有输入输出都能以一种统一 ...

  10. bzoj 2654 tree - 二分法 - 最小生成树

    给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. Input 第一行V,E,need分别表示点数,边数和需要的白色边数. 接下来E行,每行 ...