问题标签 [session-management]

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 投票
3 回答
4884 浏览

ruby-on-rails - Rails:跟踪用户的 ID

在我的 Rails 应用程序中,我有一个登录页面。该人登录后,我的应用程序继续跟踪已登录人的最佳方式是什么。例如,如果用户移动到不同的页面,我的控制器/操作将失去对该用户的跟踪,除非我不断传递用户随后访问的每个页面之间的变量。有没有更好的方法来做到这一点?我应该使用sessions变量吗?

0 投票
1 回答
2481 浏览

groovy - Groovy 会话。如何找到用户名

我正在使用 scafoldig 在 Groovy 下开发一个应用程序。我们使用 Acegi 插件来保证安全。我们有一个名为 ChangeManagement 的类,定义如下(简化版)

当我处理创建方法时,我将获得一个带有“上次修改者”标签的下拉菜单,其中包含来自表用户的所有用户,这是标准行为。

而不是这个,我想直接拥有已经登录的用户并且没有下拉菜单。我已经生成了创建模板,我可以修改它。我假设我必须从会话中获取用户名。如果我的假设是正确的,如何获得这个用户名?如果我错了,那么从哪里可以获得当前用户的用户名?

提前致谢。

0 投票
2 回答
1333 浏览

nhibernate - 当实体上存在惰性属性时,NHibernate 的 criteria.List() 挂起

我遇到了一些非常奇怪的行为,NHibernate 查询开始挂起。我制作了一个演示项目,以可重复的方式展示了这种行为。

你可以在这里下载项目

这是有问题的代码:

关键行是作者字段上的 .SetFetchMode。在我的演示项目的第一次加载时,它加载良好。当我点击刷新时,它挂起并且永远不会超过 crit.List() 调用。通过急切的加载,它每次都能正常工作。

我正在使用 Castle.Facilities.NHibernateIntegration.Components.SessionWebModule 来确保每个请求 1 个会话。

我发现的另一件奇怪的事情是这只发生在 SQL Server 上。当我使用 SQLite 时,一切正常。在我的演示项目中,我有一个简单的构建标志,可让您轻松切换数据库。只需查看 /build 目录中的 local.properties.xml。

我知道在这种特殊情况下急切加载解决了我的问题,但在我的应用程序中,我不想急切加载所有内容。

请下载解决方案并自己尝试。我在其他机器上试过,他们做同样的事情。

以下是一些 SQL Profiler 捕获。您可以看到 Posts 的查询已发送到服务器,但它停在那里:

第一个请求(按预期运行):

好的请求 http://muc-central.com/misc/good_request.jpg

第二个请求(挂起):

替代文字 http://muc-central.com/misc/hanging_request.jpg

0 投票
4 回答
116 浏览

session-management - 状态管理问题

我有三个由不同域名指向的网站。

问题是:

如果用户在一个域登录,则不会反映在其他两个域中,注销也是如此。

如何维护两个不同域的会话状态?

0 投票
2 回答
997 浏览

asp.net - 在 ASP.NET 中实现自己的会话管理

在 ASP.NET 中实现自己的会话管理有哪些选择?

我刚刚找到了一个关于“劫持”内置会话管理的旧解决方案。

有没有一种很好的方法来实现一个执行所有会话任务的组件?如何在一个请求过程中包含一个接收 HTTP 请求和响应的类?

谢谢你的帮助

问候迈克尔

0 投票
2 回答
2690 浏览

asp.net - 使用 Oracle 10g 数据库进行 ASP.NET 会话管理

我正在开发一个网络应用程序。由于某些原因,我需要使用外部存储来存储会话状态。当我使用 Oracle 10g 作为后端数据库时,我可以使用相同的 oracle 10g db 来存储会话状态吗?

提前致谢..

0 投票
6 回答
2453 浏览

php - 在 PHP 中实现自己的会话管理

有哪些选项可以在 PHP 中实现自己的会话管理?

有没有一种很好的方法来实现一个执行所有会话任务的组件?如何构造一个在一个请求过程中接收 HTTP 请求和响应的类?我只找到了似乎定义存储处理程序的选项“session_save_handler”。我需要的是替换整个会话管理。是否有另一种使用 PHP 配置的方法,或者我是否必须实现自己的控制器来接收所有请求并调用我的会话管理?

谢谢你的帮助

问候迈克尔

0 投票
2 回答
803 浏览

perl - 哪个 Perl 会话管理库与 TemplateToolkit 配合得很好?

我考虑过CGI::ApplicationCGI::Session。两者中,CGI::Session似乎更有希望。CGI::Application然而,模型看起来并不适用于Template Toolkit。(我这样想错了吗?)

在投入使用之前,我想评估更多的会话管理库。有什么建议吗?我正在寻找一个与 Web 服务器无关的库,并且可以跨多个服务器工作。Catalyst目前不是一个选项,因为将现有代码改造成Catalyst的处理方式需要时间。

0 投票
2 回答
5218 浏览

iphone - 在 iPhone 上使用 HTTP 摘要式身份验证

我有一个与使用 HTTP Digest 身份验证的服务器通信的应用程序。

在我看来,iPhone 中的“会话”管理对我们开发人员来说是相当“黑匣子”。我们真的看不到框架如何处理/持久化 http 会话吗?

如果我只是在这里昏暗,有人愿意解释如何在 iPhone 上处理 HTTP Digest 身份验证吗?

我的基本经历是:

  • 向安全 URL 发出请求
  • 服务器发送 401
  • 客户端创建并保存一个凭证,并将其传递回服务器
  • 服务器验证凭证,如果验证则完成请求,如果没有则发送另一个 401。
  • 发出后续请求以保护 url
  • 服务器再次请求授权......

这适用于单个请求,但如果我提出额外的后续请求,服务器会再次请求授权。服务器为特定用户保留了一个会话,但由于某种原因 iPhone 没有在同一个会话中发出请求......因此,服务器必须丢弃身份验证对象并在每次客户端时创建一个新对象向安全 URL 发出请求。

我确定这不是正确的行为。

如果我们看看浏览器在这种情况下的行为:

  • 浏览器从安全 url 请求数据
  • 服务器发送 401
  • 浏览器提示用户输入凭据,将其持久化,将其传递给服务器
  • 服务器验证凭据,如果验证则返回数据,否则发送另一个 401。
  • 由于浏览器管理会话,因此不会提示对安全 url 发出的后续请求提供凭据。

我正在创建 NSURLCredential 并将其保存在 NSURLCrendtialStorage 中。然后,当应用程序收到“didReceiveAuthenticationChallenge”时,我从存储中检索凭证并将其传回,如果凭证不存在(在第一个请求中)则创建凭证。

任何帮助将不胜感激。谢谢。

0 投票
2 回答
1154 浏览

java - Servlet 中的会话 ID 管理

在使用 Jmeter 进行性能测试时,我的 Web 应用程序出现了一些问题。我的问题不是围绕 Jmeter,而是围绕一个简单的 Servlet 会话管理行为。

因此,我们有一个 Web 应用程序,当您请求登录页面时,它会在响应标头中传回一个“会话 ID”,并用于浏览器发出的后续请求。会话 ID 与用户名和密码一起传递,如果经过身份验证,则返回一个新的会话 ID,并使用该会话 ID 继续保持会话。这是使用cookies。

现在在 Jmeter 中,我们有一个基于线程的负载测试方法。当我并行运行线程时,本质上发生的是每个线程都请求一个登录页面,并且不知何故,只有最后一个请求登录页面的线程经过身份验证,因为我觉得 cookie 中带有新会话 ID 的后续登录页面会使旧的或其他会话 ID。

尽管每个线程都是一个不同的会话并且有自己的 cookie 管理器,但还是会这样做。这很奇怪。

但是我的问题是:

  1. 登录页面附带会话 ID 是否有意义?我看到可能会在访问应用程序后立即创建会话,但是,是什么设置了带有会话 ID 的新 cookie?这个应用程序已经写好了,所以我只是想知道。

  2. 如果每个线程的会话 ID 在 jmeter 中被覆盖,这是否意味着我无法正确分配单独的 cookie 管理器?此外,即使线程是不同的会话,是否有可能会丢弃旧的会话 ID 或 cookie?

服务器如何知道使后续请求的会话 id/cookie 无效?我敢肯定,不是请求者的 IP 地址,因为不同的浏览器仍然会让我打开并行的多个会话。

任何关于这个问题的想法、澄清和说明都将不胜感激。