Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自Flex应用程序的Spring身份验证帮助_Java_Apache Flex_Soap_Spring Security - Fatal编程技术网

Java 来自Flex应用程序的Spring身份验证帮助

Java 来自Flex应用程序的Spring身份验证帮助,java,apache-flex,soap,spring-security,Java,Apache Flex,Soap,Spring Security,一些背景:我有一个嵌入在HTML页面中的Flex应用程序,正在使用Flex向我的Java后端发送soap请求,该请求根据Flex表单中输入的用户名和密码进行身份验证。如果我输入正确的登录名,一切正常,Flex应用程序可以继续发出进一步的请求。但是如果用户名/密码不正确,我的浏览器中会弹出一个需要身份验证的对话框,我的Flex应用程序在我单击“取消”之前不会用正确的处理程序响应。我想以某种方式摆脱这个对话框,但我对spring security还不熟悉。如果您使用自己的身份验证,即不是HTTP身份

一些背景:我有一个嵌入在HTML页面中的Flex应用程序,正在使用Flex向我的Java后端发送soap请求,该请求根据Flex表单中输入的用户名和密码进行身份验证。如果我输入正确的登录名,一切正常,Flex应用程序可以继续发出进一步的请求。但是如果用户名/密码不正确,我的浏览器中会弹出一个需要身份验证的对话框,我的Flex应用程序在我单击“取消”之前不会用正确的处理程序响应。我想以某种方式摆脱这个对话框,但我对spring security还不熟悉。

如果您使用自己的身份验证,即不是HTTP身份验证,而是使用用户名和密码的SOAP调用,您可以在spring上下文中实现HandlerExceptionResolver,以解析spring安全性引发的AccessDeniedException,并在ModelAndView中正确返回SoapFault,该ModelAndView呈现带有该错误的SOAP信封。根据浏览器的不同,您可能只能发送结果代码为200的响应。这可以由视图完成,否则Flex将无法获得它。大多数浏览器都会使用HTTP正文,而不会将其传递给flash插件

参考:


那么,您应该通过Javascript处理来自服务器的身份验证响应。可以使flex应用程序的某些方法可供页面的Javascript调用。因此,在“handler”方法中,您只需将auth响应传递给该方法即可。

Hmm,问题可能在于Flash运行时不知道如何处理401代码,浏览器取代了插件。我试图实现这一点,但不太清楚如何使用Enouncate。然而,我发现了一个快速破解。合并到我的web.xml文件中:401/bad.html该文件实际上不存在是非常重要的;这使得它引发了一个404未找到的错误,而浏览器并没有因此而抓狂。