我想审核用户在我的Django应用程序中遇到空闲超时的时间.换句话说,如果用户的会话cookie的到期日期超过了settings.py中的SESSION_COOKIE_AGE,则会将用户重定向到登录页面.发生这种情况时,也应进行审计.通过"审计",我的意思是应该将记录写入我的person.audit表.
目前,我已经配置了一些中间件来捕获这些事件.不幸的是,当用户被重定向到登录页面时,Django会生成一个新的cookie,所以我无法确定是否通过空闲超时或其他事件将用户带到了登录页面.
据我所知,我需要使用"django_session"表.但是,此表中的记录无法与该用户关联,因为在重定向发生时会重置cookie中的sessionid值.
我猜我不是第一个遇到这种困境的人.有没有人深入了解如何解决问题?
我在我的开发盒上运行一个ASP.NET网站(Vista/IIS7上的.NET 2.0).global.asax.cs中的Session_Start方法记录对文件的每次调用(log4net).Session_End方法还记录每个调用.
我正在使用InProc会话状态,并将会话超时设置为5分钟(以避免等待20分钟).
我点击网站,等待5分钟单位我看到Session_End记录.然后我F5网站.浏览器仍然具有会话cookie并将其发送到服务器.调用Session_Start并使用相同的会话ID创建新会话(顺便说一句:我需要将其作为相同的会话ID,因为它用于在数据库中存储数据).
结果:每次在先前结束的会话中按F5时,都会调用Session_Start方法,执行请求并立即调用Session_End方法.
当我打开另一个浏览器时,Session_Start方法只调用一次.然后在5分钟后,Session_End每个F5使Session_Start/request/Session_End序列执行.
web.config相关部分:
<system.web>
<compilation debug="true" />
<sessionState timeout="2" regenerateExpiredSessionId="false" />
</system.web>
Run Code Online (Sandbox Code Playgroud) 有多种方法可以处理会话超时,例如加载函数上的“元刷新”javascript 等。
我想要一些整洁的东西:超时前 5 分钟,警告用户...
我也在考虑只要浏览器打开就保持会话打开(仍然需要弄清楚如何做到这一点......可能是一些带有刷新的 iframe)。
你如何处理会话超时,你认为我应该往哪个方向发展?
当我的会话丢失或重建我的项目时,我已经开始遇到错误,因为我的表单身份验证cookie仍然存在.
在WebForms中,我使用与需要登录的页面相关联的母版页来检查会话.
我如何在MVC中的一个位置执行此操作?我讨厌在我的控制器中的每个动作中检查会话状态.
另一方面,我也不能只应用全局过滤器,因为并非所有控制器都需要会话状态.
它可能在我的布局视图中可能吗?这是需要会话的页面唯一的共同点.
有人可以解释如何使会话在PHP中持续更长时间,但不使用php.ini?
我在.htaccess中尝试了以下内容:
<IfModule mod_php5.c>
#Session timeout
php_value session.cookie_lifetime 3600
php_value session.gc_maxlifetime 3600
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
ini_set('session.gc_maxlifetime', '3600');
Run Code Online (Sandbox Code Playgroud)
但它们似乎都没有起作用.
任何的想法?
我必须满足以下要求:
[...]如果登录的用户闲置超过30分钟,他必须退出.
其中,闲置的意思是"不按鼠标也不键盘".
现在,当我第一次阅读它时,我非常确定如何实现这一点:对我而言,它听起来像是与业务逻辑有关的要求,所以我应该在业务层实现它(具有3层架构) .
这里有一些代码:
// simplified and generalized version of my login method
public boolean login(String email, String password) {
user = dao.read(email, password); //returns either null or the user
boolean logged = user != null;
if (logged) {
// initialize Session somehow, let's say for example:
Session.start();
}
return logged;
}
// simplified and generalized version of my logout method
public void logout() {
operatore = null;
// terminate Session somehow, let's say for example: …Run Code Online (Sandbox Code Playgroud) 我在我的webapp中使用Apache Shiro.
我在会话中存储了一些参数,特别是存储在数据库中的对象的主键.
当用户登录时,我从数据库加载对象并将主键保存在会话中.然后在应用程序内,用户可以编辑对象的数据,并点击取消或保存按钮.
这两个按钮都会触发RPC,以便将更新的数据提供给服务器.然后使用存储在会话中的主键在数据库中更新对象.
如果用户在应用程序中保持活动状态(制作一些RPC),一切正常.但是如果他在3分钟内保持不活动状态并随后生成RPC,那么Shiro securityUtils.getSubject().getSession()将返回null.
会话超时设置为1,200,000毫秒(20分钟),所以我不认为这是问题.
当我浏览存储在会话管理器缓存中的会话时,我可以看到用户的会话,org.apache.shiro.session.mgt.SimpleSession,id=6de78f10-b58e-496c-b40a-e2a9a4ad069c但是当我尝试从cookie获取会话ID并调用 SecurityUtils.getSecurityManager().getSession(key)以获取会话时(其中key是SessionKey实现):我得到一个例外.
当我尝试从会话ID构建新主题时,我将丢失会话中保存的所有属性.
我很高兴发布一些代码来帮助解决问题,但我尝试了很多解决方法,我不知道从哪里开始......所以请让我知道你需要什么.
或者,如果有人知道一个比Shiro更好的文档框架我很满意(Shiro缺乏文档使得它真的太耗时)
在过去的一个月里,我一直在处理一个AEM 6.0生产站点,在一周左右之后需要重新启动实例.在这种特殊情况下,我的出版商失败了.所以我进一步研究了一下,发现一切都很好,然后几天之后垃圾收集变得疯狂,所以CPU利用率就像疯了一样增加.从那里我重新启动了我的发布者并等待GC再次出现问题并使用MAT(来自eclipse的Memory Analyzer Tool)进行分析时等待堆转储.经过我的检查,我发现94%的堆都被ConcurrentHashMap占用.我潜入那个对象,发现Sessions是手头的问题,或者至少是一个主要问题.session-timeout值为0,因此会话没有超时.我的错误日志显示了这种类型的消息:
*WARN* [ip [1432319636774] GET something HTTP/1.1] org.apache.jackrabbit.oak.jcr.session.RefreshStrategy This session has been idle for 2 minutes and might be out of date. Consider using a fresh session or explicitly refresh the session.
Run Code Online (Sandbox Code Playgroud)
是否可以在AEM中配置会话管理器?以前有没有人在AEM看过这个?我应该将session-timeout设置为1还是某个值?欢迎任何建议知道我应该如何解决这个问题?
我有一个在JBoss 8.1上运行的应用程序,基于JAAS表单的登录(j_security_check),一切正常.
我的问题是:1)用户注销并在登录页面上重定向2)这里发生会话超时(用户不知道这一点)3)用户返回并正确登录=> BAM:他被重定向到j_security_check(URI以j_security_check结尾),但页面为空.
我的猜测是:JBoss不再知道先前请求的页面,因为会话超时发生并且此信息丢失.所以JBoss不知道在哪里发送现在登录的用户,页面保持空白.
我发现了一些帖子,但没有真正的答案/解决方案.谢谢你的帮助!
我需要一个从GUI设置会话超时的选项.目前,我们可以使用配置全局更改会话超时
server.session.timeout=120
server.session.cookie.max-age=120
server.session.timeout=120`
Run Code Online (Sandbox Code Playgroud)
我们还可以为每个会话设置会话超时.
session.setMaxInactiveInterval(120);
Run Code Online (Sandbox Code Playgroud)
但是没有找到全局设置会话超时的选项.有没有办法用弹簧靴做到这一点
提前致谢