我正在创建一个J2EE Web应用程序,该应用程序使用jQuery和Ajax来帮助实现用户友好界面的一些演示。我已经做了很多工作来确保持久登录cookie的安全性,并且我决定从任何使用持久登录cookie登录的用户请求密码,然后才允许进行任何可能是恶意的更改。此请求只会发生一次,以确认用户是否是他们所说的人并将在整个会话期间持续。
目前,任何符合此条件的请求都会将其请求信息存储在会话中,然后将用户转发到页面以确认其密码。确认后,将执行用户的原始请求,并从会话中删除请求信息。
我想要做的是避免所有这些重定向并最小化会话中的内容(即使只是一小段时间),从而提高了用户的可用性和便利性。我相信jQuery覆盖可以允许我提示用户输入密码(如果需要),然后如果成功则继续提交请求。
我最初使用的是ThickBox,但是由于现在已经弃用了,所以在这个开发阶段我没有看到在应用程序中实现它的好处。但是,我尝试使用jQuery创建一个叠加层,但我已经取消了所有尝试,因为我似乎无法将它们全部集合在一起。我的主要问题是当用户错误地输入密码或取消覆盖时阻止提交。
所需流量
持续登录>敏感页面>提交>密码确认覆盖> [继续提交| (取消|不正确]
我已经创建了JavaScript代码来加密要在参数中发送的密码,但我现在需要的是一种控制叠加层的方法以及如何最好地使用Ajax来实现此目的。
在回答时,请忽略这是一个J2EE Web应用程序,因为它确实无关紧要。
提前致谢,
麦金太尔
答案 0 :(得分:0)
一旦你设置了叠加层,你就必须将它挂钩到你的页面的提交(或任何其他动作调用,如果它是更多的ajax)动作。因此,如果未经过身份验证的用户提交了某些内容,您的叠加层将提示输入凭据。
取消叠加层只会导致原始请求被转储。如果用户确实提供了凭据,只需通过ajax发送,验证服务器端并发送适当的响应。获得正确的响应后,您只需触发调用身份验证的原始请求即可。
请记住,您必须在每次向服务器发出请求时检查会话检查代码。正如抖动所提到的,任何客户端表单和提交都可以简单地被绕过。