Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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 AngularJS浏览器身份验证提示_Java_Javascript_Authentication_Angularjs_Login - Fatal编程技术网

Java AngularJS浏览器身份验证提示

Java AngularJS浏览器身份验证提示,java,javascript,authentication,angularjs,login,Java,Javascript,Authentication,Angularjs,Login,我正在用AngularJS为前端开发一个应用程序,用JavaEE为后端开发一个应用程序。在AngularJS应用程序中,我尝试访问后端提供的REST资源。该资源受JAAS保护,因此只有经过身份验证的用户才能访问该资源 在我的AngularJS应用程序中: $http.get('/webresources/project/').success(function(data){...}).error(function(){...}); 项目资源受my web.xml文件保护: 。。。 基本的 文件

我正在用AngularJS为前端开发一个应用程序,用JavaEE为后端开发一个应用程序。在AngularJS应用程序中,我尝试访问后端提供的REST资源。该资源受JAAS保护,因此只有经过身份验证的用户才能访问该资源

在我的AngularJS应用程序中:

$http.get('/webresources/project/').success(function(data){...}).error(function(){...});
项目资源受my web.xml文件保护:

。。。
基本的
文件
保护区
/网络资源/*
用户
...
问题是,当我尝试在未经身份验证的情况下访问此资源时,浏览器会显示登录提示,并且我的请求处于挂起状态,直到我单击“取消”,然后响应是401和WWW Authenticate标头

我想要的是,我可以摆脱这个浏览器登录提示,并显示我自己的登录表单。所以我找到了一些解决方案,但我不知道如何实施:

1-对后端说不要发送WWW认证头。如何在Java中执行此操作?
2-发送另一个状态代码,而不是401。这是正确的行为吗?如果是:怎么做


谢谢你的帮助。

你可以做一个简单的技巧:

创建一个401.jsp错误页面并将其添加到web.xml中; 在这方面,我们必须:

<%
response.reset();
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
%>

由于重置,这将删除WWW Authenticate标头,但仍然提供401状态


希望它有帮助

你可以做一个简单的小动作:

创建一个401.jsp错误页面并将其添加到web.xml中; 在这方面,我们必须:

<%
response.reset();
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
%>

由于重置,这将删除WWW Authenticate标头,但仍然提供401状态


希望能有所帮助

好了,伙计们,我发现了一些奇怪的东西。我尝试在请求头中添加用值“Basic”初始化的“Authorization”头:
$http.defaults.headers.common['Authorization']='Basic'
并且它在Firefox中工作(没有浏览器登录提示),但在chrome中仍然会出现浏览器登录提示。您找到解决问题的方法了吗?我有一个类似的问题,无法解决。好了,伙计们,我发现了一些奇怪的事情。我尝试在请求头中添加用值“Basic”初始化的“Authorization”头:
$http.defaults.headers.common['Authorization']='Basic'
并且它在Firefox中工作(没有浏览器登录提示),但在chrome中仍然会出现浏览器登录提示。您找到解决问题的方法了吗?我有一个类似的问题,无法解决它。