我的工作类似于引擎收录的东西(是的,这 是
通用的),但允许多个用户编辑。明显的问题是多个用户试图编辑同一文件。我正在考虑在一个用户使用文件时锁定文件的方法(这不是最佳解决方案,但我不需要太复杂的东西),但是为了防止/警告用户,我显然需要监视每个用户的编辑会话的系统。使用数据库和Ajax,我正在考虑两个解决方案。
第一种方法是让编辑页面以任意间隔(例如一分钟)对服务器执行ping操作,然后它将更新数据库中的编辑会话条目。然后,下一次脚本请求编辑时,它将检查最近的ping,如果最近一次是在任意任意时间之前(例如5分钟),则我们假定先前的用户已经退出,可以再次编辑该文件。当然,此方法的问题在于,先前用户已经放弃的假设仅仅是一个假设。他可能会出现不稳定的wi-
fi连接,只好退出了十分钟,一直都在窗外。
当然,要解决 此
问题,我们必须让服务器响应来自先前关闭的会话的新请求时出现错误,并告诉客户端向用户指出他的会话已结束,然后进行处理例如,将其另存为服务器上的另一个文件并要求用户手动合并等。不言而喻,这对于最终用户而言相当可怕。
因此,我想到了另一种解决方案。unload
当用户的会话结束时,也有可能触发事件,但是我不确定这是否可靠。
有人对这个问题有其他更优雅的解决方案吗?
如果您希望对文件的并发编辑次数很少,则可以只在db中存储文件的版本号,并且当用户将文件下载到浏览器中时,他们也会获得版本号。如果版本号匹配,则只允许他们上载更改。第一个上传胜利。当检测到冲突时,您应该发送回最新文件和用户的更改,以便用户可以手动合并更改。优点是,即使是同一用户同时进行两次编辑,此方法也可以使用。如果该功能最终被频繁使用,则可以添加类似于diff工具使用的客户端合并(但在这种情况下,您可能需要保留旧版本)。
问题内容: 如何防止多个客户端使用相同的会话ID?我之所以这样询问,是因为我想增加一层安全保护,以防止网站上的会话劫持。如果黑客以某种方式弄清楚另一个用户的会话ID并使用该SID发出请求,我如何检测到服务器上有不同的客户端共享一个SID,然后拒绝劫持尝试? 编辑 经过深思熟虑后,我接受了Gumbo的回答,因为我意识到由于 无状态HTTP协议 的限制,我所要求的是不可能的。我忘了HTTP的最基本原理
记住,使用 tenant2 可以在一些服务调用中更新自己的 TenantId,我们需要在服务器端对它进行安全检测。 与此类似,即使默认情况下,不能看到其他租户的用户,但实际上可以检索和更新他们。 又到了黑客时间。 打开 Chrome 的控制台,并输入: new MultiTenancy.Administration.UserDialog().loadByIdAndOpenDialog(1) 什么?
可以使用Fiddler监视大型机PCOMM会话吗?或者使用3270模拟器软件进行大型机会话?如果是,如何?我已经查看了Fiddler文档,并进行了搜索,但没有提及。 最终目标是使用Java代码连接到大型机。我已经提供了一个PCOMM自动化解决方案,它可以登录,转到CICS,执行事务,屏幕抓取屏幕,并将屏幕数据放入文件中。现在客户端希望我在没有PCOMM的情况下做同样的事情。用户希望使用Java的解
当从KeyCloak登录页面进行身份验证时,它将会话代码作为查询参数传递。是否有一种方法可以避免这种情况,并以不同的方式传递会话代码(例如:作为头参数) POST https://xxx/auth/realms/xxx/login-actions/authenticate?session_code=xxxxxxxx&execution=xxxxxx&client_id=xxx&tab_id=xxx
背景:我在tomcat上部署了一个javaee webapp,它使用基于表单的身份验证。当web服务器接收到登录请求时,它将该请求发送到一个专用的身份验证服务,该服务验证用户登录(用户id和密码)。验证成功后,用户的会话将在web服务器中维护。 问题:我在这里编写了一个简单的webpp源代码,以模拟该场景。成功登录后,当前实例无效,并创建新实例。对于post登录页面的每个请求,都会验证会话。设置一
问题内容: 考虑到我选择的JPA(Hibernate实现),Spring和<在此处插入MVC框架-Struts 1,Struts 2,Spring MVC,Stripes …>的开发框架,我要问这个问题。 我一直在思考我的实体层中的关系- 例如,我有一个包含许多订单行的订单实体。我已经设置好我的应用程序,以便它热切地加载每个订单的订单行。您是否认为这是解决如果将获取策略设置为false会遇到的惰性