问题标签 [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.
python - 如何使用 Google 在 Appengine 上的默认身份验证跟踪会话(会话持续时间、用户登录的位置等)?
我想从我的 GAE 应用程序中跟踪我的用户——谁登录、他们登录了多长时间、他们从哪里登录等等。我想知道使用 Google 提供的身份验证机制来做这件事的好方法是什么。
我可以轻松地添加装饰器和约束,app.yaml
以确保只有在用户登录后才能访问特定的端点;但是,这并没有真正给我我需要的信息。
显然,谷歌在后台进行会话管理 - 是否有可能以任何方式与之交谈?如果没有,我是否可以利用其他经过试验和测试的方法来跟踪上述信息?
grails - 如何在 grails Web 应用程序中使用 shiro 本机会话?
目前,我在控制器和 gsp 页面中都使用默认的 HttpSession 对象:
在控制器中:
在普惠制中:
我想要一个“记住我”的功能。Shiro 已经内置了它。但是,据我了解,为了做到这一点,我必须使用 shiro 本机会话模式(在 Config.groovy:security.shiro.session.mode="native")。默认情况下,它会保持会话状态,因此只要 cookie 过期或用户注销,对象就会保留在会话中。
我的理解对吗?
然后我将不得不将我的控制器更改为:
我对此的看法:
所以,我的问题是:
- 那正确吗?
- 我不能只使用以前的方式访问会话吗?
- 我是否必须在某些配置中关闭默认的 http 会话?
struts2 - Struts2 - SessionMap 的 invalidate() 方法是否真的使会话无效?
我在我的行动中使用 aSessionMap (org.apache.struts2.dispatcher.SessionMap<K,V>)
来跟踪我的会话。我也使用invalidate()
SessionMap 提供的方法进行注销。
使用 Tomcat 提供的 webapp“管理器”,我可以监控服务器中的会话。当我想从我的 web 应用程序中注销时,我调用该方法invalidate()
。
但是调用此方法后会话不会过期!
Invalidate()
方法只删除存储在会话中的对象(例如,login()
在会话存在之后创建的用户对象。
希望我的解释清楚,我该如何解决这个问题?提前致谢
我的代码:
我使会话无效,如下所示:
会话在哪里:
multithreading - Spring + Hibernate 跨多个线程的会话管理
我正在构建一个系统,其中来自客户端的每个请求都会在服务器端产生多个线程。然后每个线程使用一个或多个 DAO(一些 DAO 可以同时被多个线程使用)。Spring将所有 DAO 注入 ( @Autowired
) 到我的线程类中。每个 DAOSessionFactory
也接收注入。
跨这些多个 DAO 管理 Hibernate 会话的正确方法是什么,这样我就不会因为多线程环境而遇到问题(例如,来自不同线程的少数 DAO 试图同时使用同一个会话)?
hibernate.current_session_context_class=thread
我在 Hibernate 配置中指定然后每次在 DAO 中简单地使用SessionFactory.getCurrentSession()
来完成工作就足够了吗?它会根据需要正确检测和创建每个线程的会话吗?
winforms - NHibernate / Castle.ActiveRecord ; 会话管理;WinForms
我的第一个真实(非测试)NHibernate/Castle.ActiveRecord 项目正在快速发展。我正在使用 NHibernate/Castle.ActiveRecord 大约一个月,但仍然不知道如何在我的 WindowsForms 应用程序中处理会话。
常见的处理方法对我不起作用:
- SessionPerRequest、SessionPerConversation 等都只适用于 WebApplications 等。
- 当我正确时,不推荐 SessionPerApplication/高度危险
- SessionPerThread 不是很有帮助,因为我要么只有一个线程,即 WindowsForms 线程,要么为每个按钮单击一个新线程。第一件事会让我的应用程序使用太多内存并将旧对象保存在内存中。使用 ech 按钮单击的工作线程,我将禁用延迟加载,因为我加载的对象的寿命会比线程长。
- SessionPerPresenter 不能正常工作,因为它很常见,我在表单中打开一个“子演示者”,让用户搜索/加载/选择一些引用的对象(外键)并且导致演示者被破坏 - 什么意思会话关闭 - 但在“超级演示者”中使用的对象填充引用属性(外键)。
我已经使用谷歌和必应几个小时并阅读了很多,但只找到了一个关于我的案例的好网站:http: //msdn.microsoft.com/en-us/magazine/ee819139.aspx。使用了 SessionPerPresenter,但对于“子演示者”,它只给出了 id,而不是整个对象!并且它接缝在这个例子中没有外键,也没有将对象返回给“超级演示者”的场景。
问题
- windowsforms/桌面应用程序是否有其他会话处理方法?
- 我可以为我的所有演示者添加会话属性或会话构造器参数,但是在我的 ui 代码中进行会话处理感觉不对。
- 当发生异常时 NHibernate 想要我终止会话。但是,如果它“只是”一个业务逻辑异常而不是 NHibernate-Exception?
例子
我试图举一个例子来涵盖我的大部分问题。
.
现在我有以下用例,所有这些都可以在同一个应用程序中同时异步执行(使用只是在演示者之间切换)。
- 使用 BoxSearchPresenter 的实例来搜索和选择对象
- 这个用例的一部分是使用 ProductSearchPresenter 的实例来填充 BoxSearchPresenter 的条件
- 这个用例的一部分是使用 BoxEditPresenter 的实例来编辑和保存 BoxSearchPresenter-instance 的选定对象
- 使用 UserSearchPresenter 的实例来搜索和选择对象
- 这个用例的一部分是使用 UserEditPresenter 的实例来编辑和保存 UserSearchPresenter 的选定对象
- 这个用例的一部分是使用 ProductSearchPresenter 来搜索和选择将添加到 User.AssignedProducts 的对象。
- 使用 ProductSearchPresenter 的实例来搜索和选择一个对象。
- 这个用例的一部分是使用 ProductEditPresenter 的实例来编辑和保存 ProductSearchPresenter 的选定对象。
这只是一小部分用例,但我已经有很多问题了。
- 用例 1. 和 2. 在同一个 ui 线程中同时运行。
- 用例 1.1。和 2.2。将选定的对象返回给使用此对象的其他演示者,然后再将已加载对象的演示者存在。
- 用例 3.1。可能会改变从 2.2./1.1 加载的对象。3.1之前。已启动,但当 2.2./1.1. 在 3.1 之前提交。完成后,对象将被保存,并且无法“回滚” 3.1。
spring - Spring 3.1 MVC框架会话管理
在我的 Web 应用程序中,是基于注释的控制器(SPRING MVC)。我想在我的应用程序中实现 SessionManagement
1.) 应用程序中的任何页面都不应闲置 15 分钟
2.) 弹出窗口应在第 10 分钟打开通知类型,以通知用户 abt 会话到期,并应为他提供将会话延长至另外 15 分钟的选项,或者默认情况下应用程序应注销
我相信在 spring MVC 中必须有一个简单的方法(我使用 spring 3.1)。比如说,必须有某种方法来注释控制器或 applicationContext.xml 中的某些配置。一定有什么办法!朋友们,请帮助我提出一种方法,如果您在此处粘贴任何示例,也会有很大帮助。如果您可以逐步指导我进行此 sessionManagement 实施,也会有很大帮助。
java - 无法理解会话对象行为
我对javax.servlet.http.HttpSession的文档感到困惑。
它说:
会话用于跨多个页面请求维护状态和用户身份。可以通过使用 cookie 或通过 URL 重写来维护会话。
现在 cookie 和 URL 重写都由服务器中的应用程序代码(即我们的代码)处理。
然后它说与何时将会话视为new
:
在客户端加入之前,服务器认为会话是新的。在客户端加入会话之前,isNew 方法返回 true。值为 true 可以表示以下三种情况之一:
1. 客户端还不知道会话
2. 会话尚未开始
3. 客户端选择不加入会议。如果客户端仅支持 cookie 并选择拒绝服务器发送的任何 cookie,则会发生这种情况。如果服务器支持 URL 重写,这种情况不会经常发生。
我不清楚何时考虑/意味着client has joined the session
.
我的意思是,如果我不使用我的 Web 应用程序(或 URL 重写)中的 cookie,并且我有以下内容:
- 从 IP A POST 到服务器
- 200 OK 从服务器到 A
- 从 IP A POST 到服务器
在第 3 步中将session.isNew()
返回 true 还是 false?从文档中我不清楚。
它会返回 false(即会话不是新会话)并且我必须调用session.invalidate()
才能创建新会话?
这让我更加困惑的原因是因为我正在调试一段代码,其中客户端是 HTTP 应用程序而不是 Web 浏览器,我看到在第 3 步中,尽管服务器代码中没有 cookie 或 url 重写,但session.isNew()
没有返回true
.
所以我无法弄清楚引擎盖下发生了什么。
任何可以帮助理解这一点的信息?
c++ - 同一页面中后续请求中的 Cookie 处理
我正在用 C++ 创建自己的(多线程)基于 ISAPI 的网站,并且正在尝试实现正确的会话管理。
问题是当应该创建一个新会话时,在生成的网页中使用后续请求时会创建两次会话。
下面是它的工作原理: - 客户端请求http://localhost并且不发送 cookie 或发送带有旧会话 ID 的 cookie。- 服务器查看会话 cookie 并认为它需要创建一个新的,因为它不再存在:它准备一个带有新会话 ID 的 cookie 的标头,并将完整的标头发送给客户端(我用Firefox 中的 http live headers 插件,它是正确的)。它还准备一些数据,例如页面和类似的东西(还没有正文数据,因为它仍在处理来自数据库的数据和类似的东西)并将它拥有的内容发送回客户端。- 客户端现在应该有这个新的会话 cookie,并看到样式表链接并立即发送样式表请求http://localhost/css到我的服务器。但是……出于某种原因,他仍然使用旧的会话 ID,而不是新收到的 ID!- 服务器看到这个请求(再次带有不再存在的会话 id),生成另一个新会话并发送带有 cookie 的新会话 id 以及样式表数据。
所以客户端现在收到了两个会话 ID,并且从现在开始继续使用第二个,因为第一个被覆盖,但是第一页使用了错误的会话(或者实际上,第二页有)。
你可以说这不是问题,但是当我开始使用个性化样式表时,我会在第一页上显示错误的样式表,并且由于页面将使用 AJAX 刷新内容(如果可用),样式表可能除非客户端刷新,否则永远不会重新加载。
那么,这是做这种事情时一直存在的问题吗?浏览器是否会一直发送旧的 cookie,尽管它已经收到了新的 cookie,但仍在处理页面?这是一个问题,例如 PHP,也有吗?
注意:在所有关于“改用 php”之类的讨论开始之前:我正在重写一个我最初用 PHP 编写的网站,它变得流行,每小时有成千上万的(真实)访问者并开始杀死我的服务器(网站没有赚到我可以扔很多服务器的那种钱)。通过用 C++ 编写,请求需要 2 毫秒而不是 PHP 中的 200 毫秒……我可以优化一切。通过花时间正确开发这个 ISAPI,它是安全的多线程并且可以多处理、多服务器。最重要的是,我喜欢挑战。
补充说明:似乎只有当cookie中存在旧会话时才会出现问题,因为当我从浏览器中完全清除所有cookie,并创建一个新cookie并将其发送回客户端时,后续样式表请求会立即使用给定的会话 ID。这似乎是在发送旧会话 id 时我做错了什么的某种证明……是否应该先删除现有的 cookie?如何?
补充说明:cookie 的有效期提前一年。
session - 不同的 Magento 会话类型有什么区别
我正在寻找一些有关 Magento 中可用的不同会话类型的差异的信息。
有一个核心会话、一个客户会话和一个结帐会话。但我不太确定何时使用哪一个以及它们的行为方式可能会有所不同。它们是否都在同一时间有效,或者结帐会话是否比核心会话更早失效?
java - Web 服务用户身份验证和会话管理的最佳实践
根据标题,我想知道 Web 服务用户身份验证和会话管理的一些最佳实践,主要用于后端实现,尤其是使用 Java (J2EE)。
有没有人发表过关于这个主题的文章?使用用户身份验证时应牢记哪些安全注意事项?什么样的设计模式是相关的?应如何管理会话?精心设计的架构是什么样的?
是否存在可以用作好例子甚至坏例子的现有系统?