sessionid_sessionid重复 - CSDN
精华内容
参与话题
  • session和sessionID以及cookie的关系

    千次阅读 2019-04-18 10:51:14
    session的建立 session存在于服务器中,需要有httpservletrequest的request对象调用getsession方法来创建session对象, request.getSession(true) 调用session,.为true时表示可以创建一个session。eg: HttpSession...
    1. session的建立
      session存在于服务器中,需要有httpservletrequest的request对象调用getsession方法来创建session对象,session对象可以存放用户的状态信息。
      ** request.getSession(true)** 生成调用session,.为true时表示可以创建一个session。eg: HttpSession session = request.getSession();
      session的默认有效时间-----tomcat服务器session默认有效时间为30min,但是可以在web.xml配置文件中进行修改。
    <session-config>
            <session-timeout>30</session-timeout>
    </session-config>
    
    1. session设置属性的方法:session.setAttribute(str name, value)

    2. 设置时间方法:表示在interval时间内不操作,session就会失效。
      session.setMaxInactiveInterval(interval)

    3. 注意:
      1.session是存在服务器的内存中的
      2.一个浏览器独享一个session域对象
      3.session中可以存放多个属性
      4.session中可以存放对象
      5.如果session设置的属性存在重名,则会替换为新的值

    4. sessionID:客户端发送请求时,服务器会生成一个session对象,session对象生成一个对应的sessionID返回给客户端,客户端再次请求时会在cookie中携带该sessionID随请求一起发送给服务器,服务器对sessionID进行验证是否有效。

    5. sessionID失效:在cookie为会话级时,sessionID在浏览器关闭时就会失效。会话级cookie的失效时间就是浏览器关闭时。

    ----cookie可以设置有效时期,在有效时期内关闭浏览器session会话会失效,也就是sessionID没了,但是也有说法说cookie不随浏览器关闭而失效,这是为什么呢??
    因为cookie分为两种,一个是会话cookie,存在于浏览器进程里,当浏览器关闭时,会话cookie不存在了,所以说sessionID存在于会话cookie中时会随着浏览器关闭而失效,sessionID是cookie的一个属性还有一种是存在硬盘的cookie,不会随浏览器关闭而失效。cookie默认失效时间是浏览器关闭。

    cookie设置失效时间:对于会话cookie可以设置失效时间吗?对于存在硬盘的cookie怎么设置失效时间呢??
    cookie.setMaxAge(0) //表示不会记录cookie
    cookie.setMaxAge(-1) ///表示这是会话级cookie,关闭浏览器时就会失效。
    cookie.setMaxAge(60) //设置了失效时间60秒,该cookie会存在硬盘中

    客户端怎么区分cookie是会话cookie还是硬盘cookie??看设置的失效时间。设置了过期时间的cookie会存放在硬盘中,关闭浏览器再打开,cookie仍然有效,直到时间过期。存在硬盘中的cookie可以在浏览器不同的进程中共享。

    有人问seesionid可以用于保存用户登录状态,且存在cookie中,那么如果将sessionID存在cookie对象里,并且此时将cookie的失效时间设置为30分钟,那么浏览器关闭时,sessionID是否过期??
    ----不会的,因为此时的cookie存在硬盘,sessionID也会存放在硬盘cookie中,cookie没有失效,sessionID值还是可以找到,因此关闭浏览器再次登录时仍然可以进入原来的网页。

    自动登录问题
    有时候出现的打开某个网页自动登录,那么这里面是利用什么技术实现的?和sessionID有关系吗?
    ------cookie实现。此时利用硬盘cookie,sessionID没有随着浏览器的关闭而关闭。直到cookie失效或者服务器的session对象失效为止。
    ------cookie+token实现。引入token实际上是为了安全。那么怎样生成token呢?一:利用设备号/设备Mac地址生成;二:将用户名和时间一起生成token,或者将sessionID加密生成token,将token保存在cookie中。用户访问网站时,后台读取Cookie,获取uid和Token,去数据库对比,如果都存在,且在有效期内,则通过uid直接获取用户信息并保存session,直接跳转到首页。资料: https://www.cnblogs.com/jacksoft/p/5216862.html

    此时对cookie设置禁止,sessionID无法存在cookie中,那么怎么保存登录状态信息
    可以利用URL回写的方式实现

    展开全文
  • sessionId的生成过程和过期时间

    万次阅读 2019-07-10 14:32:04
    浏览器第一次请求服务器时,服务器会生成一个sessionId,并返回给浏览器,这个sessionId会被保存在浏览器的会话cookie中。如下图 在浏览器不关闭的情况下,之后的每次请求请求头都会携带这个sessionId到服务器。...

    支持作者

    最便宜的卫生纸

    浏览器第一次请求服务器时,服务器会生成一个sessionId,并返回给浏览器,这个sessionId会被保存在浏览器的会话cookie中。如下图

    在浏览器不关闭的情况下,之后的每次请求请求头都会携带这个sessionId到服务器。如下图

    session在服务器的默认有效时间是30分钟,可以通过3种方式去设置session的过期时间(具体那三种可以百度),下面通过代码的方式设置session过期时间为180秒

     

    request.getSession().setMaxInactiveInterval(30*6);

    在第二次请求3分钟后我们进行第三次请求,这个时候服务器中原有的session已经过期,所以服务器会生成一个新的sessionId返回给浏览器,并替换掉cookie中之前的sessionId,第三次请求cookie携带的还是之前的sessionId。如下图

     


    浏览器再次请求,cookie就会携带新的sessionId到服务器,如下图

    通过sessionId我们可以做登陆过期,会话期间无需二次登陆等功能。

    展开全文
  • sessionid如何产生?由谁产生?保存在哪里?

    万次阅读 多人点赞 2020-03-04 11:13:43
    sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。 session在访问tomcat服务器HttpServletRequest的getSession...

    sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。

    session在访问tomcat服务器HttpServletRequest的getSession(true)的时候创建,tomcat的ManagerBase类提供创建sessionid的方法:随机数+时间+jvmid;

    存储在服务器的内存中,tomcat的StandardManager类将session存储在内存中,也可以持久化到file,数据库,memcache,redis等。客户端只保存sessionid到cookie中,而不会保存session,session销毁只能通过invalidate或超时,关掉浏览器并不会关闭session。

    那么Session在何时创建呢?当然还是在服务器端程序运行的过程中创建的,不同语言实现的应用程序有不同创建Session的方法,而在Java中是通过调用HttpServletRequest的getSession方法(使用true作为参数)创建的。在创建了Session的同时,服务器会为该Session生成唯一的Session id,而这个Session id在随后的请求中会被用来重新获得已经创建的Session;在Session被创建之后,就可以调用Session相关的方法往Session中增加内容了,而这些内容只会保存在服务器中,发到客户端的只有Session id;当客户端再次发送请求的时候,会将这个Session id带上,服务器接受到请求之后就会依据Session id找到相应的Session,从而再次使用之。

    创建:sessionid第一次产生是在直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建。

    删除:超时;程序调用HttpSession.invalidate();

    session存放在哪里:服务器端的内存中。不过session可以通过特殊的方式做持久化管理(memcache,redis)。

    session的id是从哪里来的,sessionID是如何使用的:当客户端第一次请求session对象时候,服务器会为客户端创建一个session,并将通过特殊算法算出一个session的ID,用来标识该session对象

    session会因为浏览器的关闭而删除吗?

    不会,session只会通过上面提到的方式去关闭。

     

    下面是tomcat中session的创建:

    ManagerBase是所有session管理工具类的基类,它是一个抽象类,所有具体实现session管理功能的类都要继承这个类,该类有一个受保护的方法,该方法就是创建sessionId值的方法:

    (tomcat的session的id值生成的机制是一个随机数加时间加上jvm的id值,jvm的id值会根据服务器的硬件信息计算得来,因此不同jvm的id值都是唯一的),

    StandardManager类是tomcat容器里默认的session管理实现类,

    它会将session的信息存储到web容器所在服务器的内存里。

    PersistentManagerBase也是继承ManagerBase类,它是所有持久化存储session信息的基类,PersistentManager继承了PersistentManagerBase,但是这个类只是多了一个静态变量和一个getName方法,目前看来意义不大,对于持久化存储session,tomcat还提供了StoreBase的抽象类,它是所有持久化存储session的基类,另外tomcat还给出了文件存储FileStore和数据存储JDBCStore两个实现。

    转自:http://www.cnblogs.com/woshimrf/p/sessionId.html

    欢迎关注我的公众号

    展开全文
  • 保存session id有几种方式

    千次阅读 2018-03-26 00:10:30
    1.第一种就是大家喜闻乐见的使用cookie中JSESSIONID=sessionID的方式存储到客户端,然后发送到服务器端,就可以从服务器的内存中根据ID找到HttpSession对象。2.但是要注意,浏览器是可以选择将cookie进行人为禁止的,...

    1.第一种就是大家喜闻乐见的使用cookie中JSESSIONID=sessionID的方式存储到客户端,然后发送到服务器端,就可以从服务器的内存中根据ID找到HttpSession对象。

    2.但是要注意,浏览器是可以选择将cookie进行人为禁止的,所以就必须要有其他的机制可以保证cookie禁止的状态下仍然可以发送session id到服务器,经常采用的方式就是URL重写,使用URL重写的方式也有2种:

        1.作为URL的附加信息,比如    http://...../xxx;jsessionid=D75aPnrF7C2HByOK3vjF

        2.作为查询字符串附加在URL后面,比如:http://……?……&jsessionid=PnrF7OK3vjC2HByFD75a

        但是这种方式也有很大的缺陷:

        如果使用这样的方式的话,所有的请求地址后面都需要添加这些session id信息,但如此的话,就以为着,本项目中不能存在任何的静态的页面,因为静态页面的信息,服务器端是会原样发送的客户端,而针对动态页面JSP会进行编译成Servlet再发送到客户端,如果链接中带有了数据交互的信息,静态页面后附加的sessio id信息就会失效,这是缺点之一;还有一大弊端,就是关于session失效的问题,当从保留的链接中找回原地址,到服务器端,session就会发现已经失效过期,这就非常的头疼了。

    3.还有一种方式就是,使用表单的隐藏域的功能,服务器端会自动修改表单,添加一个隐藏字段,就可以让用户在提交表单的时候,把sessionID传回服务器。

        但这样也有缺陷:

        无法完成session的跟踪,因为页面的信息都是由表单进行提交,需要为每一个表单项里添加隐藏域的功能,而且如果点击超链接,就更不可能带着隐藏域里的信息进行传递session id的值了,所以,这也是最大的缺点。

    展开全文
  • 那么如果用户b登录,那么按道理会从cookie中取出之前的那个sessionid,然后传给服务器,然后服务器端会识别这个sessionid,取出对应session的信息,那这样岂不是会造成:a用户存储在session中的信息,会被b用户看到...
  • 如何根据sessionID获取session解决方案

    万次阅读 热门讨论 2020-05-17 00:11:44
    最近在做一个项目的时候,本来是想通过session来存一些数据的,但是,发现当两次访问的方法不同时,后台的session是不一样的,也就是说sessionId,不一致,所以导致的问题就是:当我需要从session取值的时候,总是...
  • sessionId的作用

    千次阅读 2018-02-11 22:30:22
    sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成的sessionid叫做jsessionid。session在访问tomcat服务器HttpServletRequest的getSession(true)...
  • 原文地址:https://blog.csdn.net/weixin_37864013/article/details/80230290sessionid是一个会话的key,浏览器第一次...tomcat生成的sessionid叫做jsessionid。jetty为sessionId。创建:客户端调用 HttpServletR...
  • Cookie和Session、SessionID的那些事儿

    千次阅读 多人点赞 2019-06-17 17:40:19
    指某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)。也就是说如果知道一个用户的Cookie,并且在Cookie有效的时间内,就可以利用Cookie以这个用户的身份登录这个网站。 ...
  • 什么是Session?...什么是SessionId? 用来获取Session回话的一个序列号(由随机值 + 实际 + jvm的id)jvm的id由硬件信息计算得出 Session是什么时候创建的? HttpSession session =requset....
  • spring-session实现分布式session共享及自定义sessionid
  • tomcat对sessionId的处理分析

    万次阅读 2012-07-29 09:09:15
    tomcat 7对sessionId的处理: 首先解析request请求中的sessionID: 从AjpProcessor.java的process(SocketWrapper socket)调用CoyoteAdapter.process里面有的postParseRequest(org.apache.coyote.Request req,...
  • android 获取sessionid

    千次阅读 2018-09-12 17:13:24
    android与web服务器要在同一session下通信的问题。 在解决问题前先回顾下Session与Cookie:   Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的...
  • 作为一个刚入行的小白,在公司接手了一个springboot的项目,项目中我们完全使用session,管理用户的登陆信息及权限,项目完成时,我们需要集成某公司的nigix服务器,甲方要求,并且由甲方提供,一开始,我们接入之后...
  • ASP.NET中 SessionID的本质

    千次阅读 2018-05-27 10:24:32
    一、客户端用cookie保存了sessionID客户端用cookie保存了sessionID,当我们请求服务器的时候,会把这个sessionID一起发给服务器,服务器会到内存中搜索对应的sessionID,如果找到了对应的 sessionID,说明我们处于...
  • Session ID 是如何产生的?

    千次阅读 2014-12-11 14:30:59
    HTTP协议(http://www.w3.org/Protocols/)是“一次性单向”协议。  服务端不能主动连接客户端,只能被动等待并答复客户端请求。客户端连接服务端,发出一个HTTP Request,服务端处理请求,并且返回一个HTTP ...  ...
  • 如何根据sessionID获取session

    千次阅读 2015-04-18 14:27:41
    根据sessionID有一个比较简单的方法,使用session上下文即可 HttpSession sess = session.getSessionContext().getSession(sid) 不过很可惜,java之后处于安全性考虑,不建议使用这个方法,虽然我不知道为什么对...
  • SpringSession系列-sessionId解析和Cookie读写策略sessionId 解析策略 首先需求在这里说明下,SpringSession的版本迭代的过程中肯定会伴随着一些类的移除和一些类的加入,目前本系列使用的版本是github上对象的...
  • Java通过sessionid获取session

    千次阅读 2019-01-11 18:41:21
    2,将sessionid与session通过键值对的形式进行存储(静态全局变量)。 3,需要使用的时候将session进行取出 代码: HttpSession session = request.getSession(); //获取sessionid String sessionId = session....
  • shiroConfig里面也已经配置了自定义sessionId ShiroConfig代码如下 ``` @Configuration public class ShiroConfig { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") ...
1 2 3 4 5 ... 20
收藏数 688,703
精华内容 275,481
关键字:

sessionid