问题标签 [session]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
5964 浏览

java - 有没有办法用 Tomcat 指定不同的会话存储?

Tomcat(此处为版本 5)将会话信息存储在内存中。集群时,此信息会定期广播到集群中的其他服务器以保持同步。您可以使用数据库存储使会话持久化,但此信息也只是定期写入,并且仅真正用于故障恢复,而不是实际替换内存中的会话。

如果您不想使用粘性会话(不幸的是,我们的配置不允许这样做),这会引发会话不同步的问题。

在其他语言中,Web 框架倾向于允许您使用数据库作为主要会话存储。虽然这引入了潜在的扩展问题,但它确实使会话管理非常简单。我想知道是否有办法让tomcat以这种方式使用数据库进行会话(从技术上讲,这也将消除对tomcat server.xml中任何集群配置的需要)。

0 投票
5 回答
14670 浏览

java - 当 Hibernate 刷新一个 Session 时,它如何判断 session 中哪些对象是脏的?

我对 Hibernate 的理解是,当对象从数据库加载时,它们会被添加到会话中。在不同的点,根据您的配置,会话被刷新。此时,修改后的对象被写入数据库。

Hibernate 如何决定哪些对象是“脏的”并且需要写入?

Hibernate 生成的代理会拦截对字段的分配,并将对象添加到 Session 的脏列表中吗?

还是 Hibernate 会查看 Session 中的每个对象并将其与对象的原始状态进行比较?

还是完全不同的东西?

0 投票
5 回答
34407 浏览

java - 使用 Tomcat 允许子域会话 cookie 的最佳方式

默认情况下,tomcat 将为当前域创建一个会话 cookie。

如果您在 www.example.com,您的 cookie 将为 www.example.com 创建(仅适用于 www.example.com)。而对于 example.com,它将为 .example.com 创建(所需的行为将适用于 example.com 的任何子域以及 example.com 本身)。

我见过一些 Tomcat 阀门,它们似乎拦截了会话 cookie 的创建并使用正确的 .example.com 域创建了一个替换 cookie,但是它们似乎都没有完美地工作,它们似乎都离开了现有的 cookie,只是创建一个新的。这意味着每个请求都会发送两个 JSESSIONID cookie。

我想知道是否有人对这个问题有明确的解决方案。

0 投票
3 回答
777 浏览

c# - Inproc 和 stateserver 会话变量的不同 GetHashCode 值

我最近继承了一个大量使用会话的应用程序,包括在会话中存储大量自定义数据对象。我使用此应用程序的第一个业务点是至少将会话数据从 InProc 移开,并将其卸载到状态服务器或 SQL Server。

在我使所有适当的数据对象可序列化,并将 web.config 更改为使用状态服务之后,一切似乎都工作正常。

但是,我发现这个应用程序使用 GetHashCode() 进行了很多对象比较。当会话是 InProc 时运行良好的方法不再起作用,因为 HashCode 在它们应该匹配时不再匹配。当您知道子对象的原始哈希码时尝试从父对象中查找特定子对象时,似乎就是这种情况

如果我只是将 web.config 改回使用 inproc,它会再次起作用。

有人对从哪里开始有任何想法吗?


编辑:

qbeuek:感谢您的快速回复。关于:

Object 类中 GetHashCode 的默认实现根据内存中的对象地址或类似的东西返回一个哈希值。如果需要进行其他身份比较,则必须同时覆盖 Equals 和 GetHashCode。

我应该提供更多关于他们如何使用它的信息。基本上,它们有一个父数据对象,并且有多个子对象数组。他们碰巧知道他们需要的特定对象的哈希码,因此他们循环通过特定的子对象数组来寻找匹配的哈希码。一旦找到匹配项,他们就会将该对象用于其他工作。

0 投票
4 回答
16202 浏览

session - 会话外观核心 J2EE 模式的优点和缺点是什么?

会话外观核心 J2EE 模式的优点和缺点是什么?

它背后的假设是什么?

这些假设在特定环境中是否有效?

0 投票
5 回答
3824 浏览

session - 在经典 asp 中,我可以在 Session 对象中存储数据库连接吗?

我可以在 Session 对象中存储数据库连接吗?

0 投票
8 回答
3111 浏览

asp.net - ASP.NET 中的会话变量混淆?

ASP.NET 是否可以混淆服务器上哪个用户与哪个会话变量相关联?会话变量是否与跨时间、空间和维度创建它们的原始用户一成不变?

0 投票
9 回答
8427 浏览

asp.net - 如何将 asp.net 会话显式设置为仅在关闭浏览器或显式登录时过期?

默认情况下,会话到期时间似乎是 20 分钟。

更新:我不希望会话在浏览器关闭之前过期。

Update2:这是我的场景。用户登录网站。在现场播放。离开电脑去洗澡(>20 分钟;))。回到电脑前,应该可以玩了。他关闭浏览器,这会删除会话 cookie。下次他从新的浏览器实例访问该站点时,他需要再次登录。

在 PHP 中,我可以将 php.ini 中的 session.cookie_lifetime 设置为零来实现这一点。

0 投票
5 回答
3246 浏览

asp.net - 什么会导致 ASP.NET 工作进程被回收?

这是我目前的问题:

我猜我的问题(如下所述)是由 ASP.NET 工作进程被回收引起的,根据下面的答案 - 我正在使用 InProc 会话存储,并且由于限制,我看不到太多移动的机会对于其他类型的存储,所有会话对象都是可序列化的。但是,我无法弄清楚是什么让工作进程像我看到的那样经常被回收——据我所知,app 目录中的文件没有任何变化,而且 IIS 中的选项似乎意味着该进程只会每 1,740 分钟回收一次——这比实际会话丢失的频率要低得多。所以,我现在的问题是,有哪些不同的情况会导致 ASP.NET 工作进程被回收?

这是我原来的问题:

我的 ASP.NET Web 应用程序中出现了一个难以重现的问题。该应用程序有一个主 .aspx 页面,该页面已加载并初始化了许多会话变量。此页面使用 ASP.NET AjaxSys.Net.WebRequest类重复访问另一个 .aspx 页面,该页面使用会话变量进行数据库查询和更新主页(从不重新请求主页)。

有时,在使用页面一段时间后,导致成功的 HTTP 请求,其中在主页面中创建的会话正确传递到子页面,其中一个请求似乎导致创建新的 ASP.NET 会话——所有会话变量丢失(导致我的代码中抛出异常),并且在动态请求的页面中报告了新的会话ID。这意味着突然间,主页与服务器断开连接——就服务器而言,用户不再登录。

我几乎可以肯定这不是会话超时 - 超时时间设置为荒谬,发生这种情况所需的时间是可变的,但永远不会长到足以导致会话超时,并且常量Sys.Net.WebRequests 应该刷新会话计时器。

那么,还有什么可能导致 HTTP 请求与 ASP.NET 会话失去联系呢?不幸的是,当这种情况发生在我身上时,我并没有嗅探网络流量,否则我会检查 ASP.NET 会话 cookie 是否存在。

0 投票
7 回答
771 浏览

php - 在 PHP 中使用会话的最新、最佳实践和最简单的方法是什么?

PHP 中的会话似乎自我上次使用它们以来发生了变化,因此我正在寻找一种使用会话的简单方法,但同时它相对安全且是一种良好的常见做法。