Ajax和表单认证

Rom*_*nko 5 javascript ajax jsp weblogic web-applications

我正在尝试在ajax应用程序中实现表单身份验证。我的问题是,当会话过期时,我得到302代码,将我重定向到我在web.xml中指定的登录页面(这使刷新整个应用程序到登录页面的一切混乱了)。

我要执行的操作是获取“未经身份验证”(401)代码,然后在弹出窗口中显示登录表单,并在登录成功后继续执行我的操作。

这是正在发生的事情的图片: http://docs.oracle.com/javaee/1.4/tutorial/doc/images/security-formBasedLogin.gif

和docs http://docs.oracle.com/javaee/1.4/tutorial/doc/Security5.html

基本上,我想显示弹出窗口而不是重定向到登录页面,然后不重定向到资源,而是以AJAX方式进行更新。据我了解,由于无法避免重定向,因此无法仅在客户端完成(请参见此处:redirect info),我需要在服务器上编写某种逻辑来防止重定向,请参见此处有关在IIS中执行此操作的详细信息: IIS实现

PS到目前为止:http : //www.oracle.com/technetwork/articles/entarch/session-lifecycle-096133.html看起来是实现它的最有前途的方法。该类已弃用,但我找不到新的类,并认为这是为Weblogic做到这一点的唯一方法。

Kon*_*nza 1

这不是一个简单的方法,但仍然有效

您的页面中有一个由用户填写的表单。

用户单击提交按钮。

ajax 请求被发送到服务器。

服务器端实现可以检查会话是否存在。因此您可以发送响应代码 401..(response.setStatus());

可以使用 ajax 在客户端检查此 401 --- xhr.status

如果响应是 401,您可以显示登录表单并隐藏当前表单。使用js和css。

用户填写登录详细信息并单击提交。

您可以对该登录请求的状态执行相同的服务器端检查和客户端检查。

如果登录成功,那么您可以使用ajax或js提交第一个表单。