如何从 Servlet 过滤器中的 URL 中提取用户名和密码?

Dan*_*lan 4 servlets basic-authentication servlet-filters

我创建了一个BasicAuthFilter,它有这个签名:

@Override
public void doFilter(ServletRequest request,
                     ServletResponse response,
                     FilterChain chain) throws IOException, ServletException 
Run Code Online (Sandbox Code Playgroud)

如果有人使用正确设置的授权标头调用过滤器,则此方法有效。但是,如果有人在 chrome 或 firefox 上访问如下网址:

http://username:password@localhost:8888
Run Code Online (Sandbox Code Playgroud)

浏览器没有使用该信息填充授权标头(这让我感到惊讶)。我查看了 chrome 发送的信息,用户名和密码位于请求 URL 中,但其他地方都没有。

我不知道如何从 URL 中提取该信息。我在 上尝试了很多吸气剂HttpServletRequest,但没有找到任何可以给我用户名和密码的东西。

注意:是的,我知道这是不安全的,但当您尝试测试系统时使用起来确实很方便。

Moh*_*put 5

    URL url = new URL(custom_url);
    String userInfo = url.getUserInfo();

    String[] userInfoArray = userInfo.split(":");
    System.out.println("username"+userInfoArray[0]);
    System.out.println("password"+userInfoArray[1]);   
Run Code Online (Sandbox Code Playgroud)