精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-11-07
方法一:先访问登陆页面,然后输入用户名密码。登陆成功,跳转到主页面。然后在主页面随便打开一个连接(或者刷新),都是成功的。 方法二:直接用url接上用户名以及密码登陆,登陆成功,跳转到主页面。然后在主页面随便打开一个连接(或者刷新),都是不成功的。(服务器有验证session机制如果不存在则跳入另一个页面)。 备注,操作之前浏览器都被我清除掉了cookie。 第二种登陆方法为什么不成功呢,apache session是什么时候创建的啊。 第一次接触这些东西 ,希望能有前辈给予一定的指导,或者给个方向。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-11-07
第二种方法,主要是用于客户端登陆(非网页登陆)。一开始保存认为是session保存出错,后来才发现是登陆之前如果没有session传入服务器端登陆即使成功了,下次登陆用这个session也不行
|
|
返回顶楼 | |
发表时间:2012-11-07
之前没有用apache负载均衡都是可以用的, 但是现在登陆之前必须访问一下登陆页面(其他页面也可以)获取一个sessionid 然后再拿这个sessionid登陆,然后才能正常访问。。。很晕。apache的session机制很special吗?
|
|
返回顶楼 | |
发表时间:2012-11-08
session在打开浏览器时在服务器上创建,在客户端存储sessonid。是不是登陆动作改变了sessionid。或和服务器版本有关。随便说说。
|
|
返回顶楼 | |
发表时间:2012-11-08
coconut_zhang 写道 session在打开浏览器时在服务器上创建,在客户端存储sessonid。是不是登陆动作改变了sessionid。或和服务器版本有关。随便说说。
登陆的时候没有改变sessionid,直接用url登陆然后服务器端是创建了一个session,然后客户端也接受到了,然后再次用这个sessionid到服务器端是验证不通过的。也就是说服务器用这个sessionid找不着之前的session了。很奇怪 |
|
返回顶楼 | |
发表时间:2012-11-08
JSESSIONID=64C202FF5B88C96D7F63C771BEC7D9B6.jvm1;
这是返回来的sessionid 后面的“jvm1“是tomcat服务器名,是apache加上的应该。用于指定访问服务器。 |
|
返回顶楼 | |
发表时间:2012-11-08
最后修改:2012-11-08
这边我就附一个请求httphead
request Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7 Accept-Encoding gzip, deflate Accept-Language zh-cn,zh;q=0.5 Connection keep-alive Host 192.168.3.97 User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0.1) Gecko/20100101 Firefox/5.0.1 response Connection Keep-Alive Content-Length 615 Content-Type application/json;charset=UTF-8 Date Thu, 08 Nov 2012 01:46:32 GMT Keep-Alive timeout=5, max=100 Set-Cookie JSESSIONID=98B0039F41001C9CF50D725086C77DC0.jvm2; Path=/XXXX X-Pad avoid browser bug 然后显示是登陆成功的 并且得到了一个SESSIONID 然后我再次访问一个url XXXXXXXXX request : Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Charset GB2312,utf-8;q=0.7,*;q=0.7 Accept-Encoding gzip, deflate Accept-Language zh-cn,zh;q=0.5 Connection keep-alive Cookie JSESSIONID=98B0039F41001C9CF50D725086C77DC0.jvm2 Host 192.168.3.97 User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0.1) Gecko/20100101 Firefox/5.0.1 response : Connection Keep-Alive Content-Length 0 Content-Type text/plain Date Thu, 08 Nov 2012 01:53:55 GMT Keep-Alive timeout=5, max=100 Location http://192.168.X.XX/XXX/error.jsp(之前session验证不通过redirect的一个error page) |
|
返回顶楼 | |
发表时间:2012-11-08
apache的session 必须在后台使用才会创建,否则不创建...如果访问过程中不获得session,那么tomcat不会创建session的....一旦创建后,在集群状态,会拷贝这个session到其他的tomcat
|
|
返回顶楼 | |
发表时间:2012-11-08
charyle 写道 apache的session 必须在后台使用才会创建,否则不创建...如果访问过程中不获得session,那么tomcat不会创建session的....一旦创建后,在集群状态,会拷贝这个session到其他的tomcat 登陆的时候调用了啊,还往添加了用户信息。然后每次访问的时候都有判断是否含有该用户信息。如果不存在就跳转到错误页面。然后我还打了log,好像登陆后session被destroy了。因为登陆后第二次getsession获取的不是第一次创建的session。 |
|
返回顶楼 | |
发表时间:2012-11-08
最后修改:2012-11-08
好吧,现象是确认了,但是原因还有待调查。
当登陆request到达服务器的时候然后服务器创建了一个session 记作s1,然后紧接着又创建了一个session 记作s2,然后用户信息都被保存在了s1,下一个request到达时只能够访问到s2,而s2中并没有保存用户信息,最后被filter拦截了下来并重定向到error page 现象是理清楚了,但是现在又搞不清楚为什么会连续创建两个session... 求解啊。。 给点看法,给点方向 也行啊 |
|
返回顶楼 | |