java - 后续访问的Tomcat鉴权

标签 java tomcat authentication servlets web-applications

我正在尝试模拟身份验证 (BASIC) 在 Tomcat 中是如何发生的,问题是当我第二次尝试获取资源时它不要求密码而是直接在我的浏览器上显示资源。如何为每个请求强制弹出登录?

下面是我正在使用的 Servlet 代码。

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//import org.apache.tomcat.util.buf.Base64;

public class TestServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("This is the Test Servlet");

        Enumeration headerNames = request.getHeaderNames();
        while (headerNames.hasMoreElements()) {
            String headerName = (String) headerNames.nextElement();
            out.print("<br/>Header Name: <em>" + headerName);
            String headerValue = request.getHeader(headerName);
            out.print("</em>, Header Value: <em>" + headerValue);
            out.println("</em>");
        }

        out.println("<hr/>");
        String authHeader = request.getHeader("authorization");
        String encodedValue = authHeader.split(" ")[1];
        //out.println("Base64-encoded Authorization Value: <em>" + encodedValue);
        //String decodedValue = Base64.base64Decode(encodedValue);
        //out.println("</em><br/>Base64-decoded Authorization Value: <em>" + decodedValue);
        out.println("</em>");
    }

}

还有我的部分 web.xml 角色和用户

    <role rolename="tomcat"/>   
<user username="tomcat" password="tomcat" 
roles="tomcat"/>   <user username="myname" password="mypassword" roles="tomcat"/>   <user username="test" password="test"/>
    </tomcat-users>

PS:我知道这不是很好的身份验证方式,但我需要知道它有效,然后我才能探索 ssl 身份验证。

最佳答案

您可以在每次调用后清除 session (doGet() 方法的最后一行):

request.getSession().invalidate();

关于java - 后续访问的Tomcat鉴权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32494131/

相关文章:

java - 在 Apache Tomcat 上部署 GWT 应用程序

java - 具有间隔的方法的执行

java - 如何在 Java 中实现这个(带下拉菜单的菜单栏)?

java - ParseException:无法解析的日期:

java - Tomcat 服务器和 HTTP 客户端接受过期的自签名证书

Tomcat JSR356 Websocket - 禁用 permessage-deflate 压缩

java - RxJava retry当重试整个方法时返回一个Completable

javascript - 使用 Angular + Play 框架 (Java) 进行 SPA 身份验证

.net - 当我们创建新的 Web API 服务时,如何在 .NET Core 中激活身份验证类型 - Web API 的个人用户帐户

Java:如何向通过java.awt.frame实现的GUI窗口添加滚动条?