首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Ajax和表单身份验证

Ajax和表单身份验证
EN

Stack Overflow用户
提问于 2012-11-17 06:27:06
回答 5查看 2K关注 0票数 5

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

我想要做的是得到一个“未认证”(401)代码,然后在一个弹出窗口中显示登录表单,当登录成功时,继续我正在做的事情。

这是一张正在发生的事情的图片:

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

基本上,我想显示弹出窗口,而不是重定向到登录页面,然后不做重定向到资源,但在AJAX方式做我的更新。据我所知,这不能只在客户端完成,因为无法避免重定向(请参阅此处:redirect info),我需要在服务器上编写某种类型的逻辑来防止重定向,有关在IIS:IIS implementation中执行此操作的详细信息,请参阅此处

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

EN

回答 5

Stack Overflow用户

发布于 2012-11-21 21:15:43

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

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

用户单击提交按钮。

ajax请求被发送到服务器。

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

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

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

用户填写登录详细信息,然后单击提交。

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-11-26 21:00:57

您可能需要使用weblogic.xml Deployment Descriptor Elements中所述的servlet身份验证过滤器

以下教程可能会对您有所帮助:

oracle Servlet Authentication Filters

Using servlet filters for user authentication

Writing Servlet Filters

票数 1
EN

Stack Overflow用户

发布于 2012-11-25 00:09:08

您可以对服务器的ajax请求使用心跳检查,该请求指向需要进行身份验证才能获得它的任何资源。如果您无法收到此资源,则表示您尚未登录。因此,您可以发送另一个身份验证请求,然后继续渲染。

请参阅这篇文章。http://ajaxpatterns.org/archive/Heartbeat.php

因此,您的身份验证检查例程将被实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13425355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档