从前台应用程序查询休息-后台应用程序时,避免基本的auth弹出。

问题描述 投票:0回答:1

我有两个应用,两个战争,app-rest和app-web。App-rest是持有rest-api的后端,app-web是持有react GUI的前端。

我想使用basic auth来保证后端的安全,但是当这样做的时候,前台的ajax请求会在浏览器中触发一个basic auth弹窗。

我使用Glassfish作为应用服务器。

我试着保护两个应用程序的安全,希望它们能共享会话cookie,但似乎不是这样。

我也试过使用java过滤器来尝试删除未经授权的WWW-authenticate头,因为我读到那个头会触发弹出窗口,但是过滤器在基本的auth初始化过程中没有被激活。

我试过使用基于表单的登录,那是一种工作,但是我失去了使用像postman这样的应用程序来测试我的rest-api的能力(至少我认为是这样的,因为我不能在请求本身中进行认证)。

当我从前端向后端进行请求时,如何避免显示基本的auth弹出窗口?

java reactjs ajax glassfish basic-authentication
1个回答
0
投票

这个奇妙的人解决了。如何在发送前更改响应

他所做的是在web.xml中添加以下内容。

<error-page>
   <error-code>401</error-code>
   <location>/error.jsp</location>
</error-page>

而在error.jsp中。

<%@page contentType="text/html" pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title></title>
        </head>
        <body>
            <%
            int status = response.getStatus();
            if (status == 401) {
                response.setStatus(403);
            }
            %>
        </body>
    </html>

然后在你的javascript中寻找状态码403 然后显示一个自定义的登录界面,不需要基本的auth弹出。

© www.soinside.com 2019 - 2024. All rights reserved.